Tagbangers Blog

Spring I/O 2017 Day 2 の概要

Spring I/O 2017 の2日目の予定。ちょっと前に公演時間も公開されましたので、1日目も変更しております。

原文はこちらにございます。

Reactive Spring

by Josh Long (龙之春) and Mark Heckler 9:00am to 9:50am

Demo:
https://github.com/joshlong/flux-flix-service

Spring 5がすぐそこまで来ています! このリリースで最もエキサイティングな紹介の1つに、メッセージドリブンで拡張性があり、レジリエントで応答性の高いサービスをサポートするPivotalのProject Reactorをベースにしたリアクティブプログラミングのサポートがあります。 Spring 5は、Reactive処理をサポートするように適応されたMVCのようなコンポーネントモデルと、新しいタイプのWebエンドポイント、ファンクショナルなエンドポイントを統合しています。 この講演では、新しくNettyベースのWebランタイムと、それを既存のSpringスタックテクノロジと統合する方法を見ていきます。

Reactive Spring UI’s for business

by Risto Yrjänä 9:00am to 9:50am

リアクティブWebアプリケーションは、ここでは奇妙な流れ、スケーラビリティと恐ろしいデバッグ経験が約束されています。 現場のUIをいくつか紹介します。

アウトライン:

  • リアクティブUIのプロパティ
  • サーバーサイドJavaを使用したシンプルなリアクティブUI
  • ポリマーWebコンポーネントとのシンプルなリアクティブUI

Spanner - a fully managed horizontally scalable relational database with ACID transactions that speaks SQL

by Robert Kubis 9:00am to 9:50am

ライブコーディングとデモです!
このプレゼンテーションでは、Spannerの概要、最初のインスタンスとデータベースのセットアップ方法について説明します。 テラバイトのデータに拡張できるようになった最初のスキーマとクエリを考案するときは、設計上の意思決定を行います。 ちょっとコードやクエリとその説明を見て準備してきてくださいね。

Data Processing With Microservices

by Michael T Minella 10:00am to 10:50am

「マイクロサービス」という言葉が現れたら、多くの人はウェブサイトを動かすRESTエンドポイントのことを考えるでしょう。 ですが、バッチおよび統合スタイルのワークロードに12の要素の概念を適用すると、膨大なメリットが得られます。 この講演では、Spring Cloud Streamを介したストリーミングアプリケーション(統合)と、Spring Cloud Taskを使用した短命のマイクロサービスの両方のためのデータマイクロサービスの作成に取り掛かります。 Spring Cloud DataFlowを使用して、これらのマイクロサービスを有用なアプリケーションに編成する方法を見ていきましょう。 SpringとSpring Bootの一般的な知識は、この講演に役立ちます。

Experiences from using discovery services in a microservice landscape

by Magnus Larsson 10:00am to 10:50am

マイクロサービス環境で最も重要なコンポーネントの1つは、ディスカバリサービスです。 ここ数年の間に、特にコンテナインフラストラクチャの分野において、サービスディスカバリのための多数の代替案が進化してきました。

このプレゼンテーションは、私の経験に基づいて、いくつかの選択肢を見ていきます。 このプレゼンテーションでは、Netflix OSS、Docker Swarm、Amazon ECS、Google Kubernetesのディスカバリサービスコンポーネントについて説明します。 Spring Cloudを使用して、選択されたディスカバリサービスとは独立した、つまりコードの変更を必要とせずに任意の選択肢と共に使用できるマイクロサービスを作成する方法についても説明します。

Protection and Verification of Security Design Flaws

by Roberto Velasco and MDSec 10:00am to 10:50am

ソフトウェアの脆弱性には、セキュリティバグと設計上の欠陥という2つの基本の要因があります。

一般的なSQLインジェクションやクロスサイトスクリプティングの脆弱性などのセキュリティバグは、コーディングのエラーであり、
すべて同じパターンに従うため、自動ツールで簡単に検出できます。セキュリティバグソフトウェア開発者が簡単に解決できるようになりました。

しかし、ソフトウェア関連セキュリティ問題の半分はツールで検出できません。

これらはソフトウェアに組み込まれた設計上の欠陥であり、Webアプリケーションの適用範囲に精通している人のみがこのような脆弱性を識別できます。
今までは、ペンテストによって手動で検出する必要がありました。その結果、しばしばアプリケーションアーキテクチャーが刷新されました。

これは、経済的なコストだけでなく、アプリケーションの市場投入までの時間の影響により重要な問題でもあります。
この問題を解決するために私たちは何ができますか?

この講演では、アプリケーションのセキュリティアーキテクチャとテストツールを初めて共同で使用することにより、アプリケーションを設計上の欠陥から保護し、それらを自動的に検証するソリューションを紹介します。

実用的なアプローチに続いて、この講演では、Spring MVCおよびSpring RESTに基づくSpring参照アプリケーション(PetClinic)を使用し、Burpなどのよく知られているペンテストツールを使用した実用的な例を示します。

Harnessing the Power of Spark & Cassandra within your Spring App

by Steve Pember 11:30am to 12:20pm

多くの企業にとって、収集するデータと構築するデータセットは、最も貴重な資産です。これらのデータセットが増加するにつれて、これらの組織がデータの中で分析して意味を見つけることがますます重要になり、Hadoopのようなよく知られたツールに行き着きます。
しかし、過去数年間で、次世代のデータ分析ツールが登場しました。特にApache Sparkが注目されています。

Sparkは、クラスターコンピューティングのフレームワークで、関数プログラミングインターフェースを使用して、複数のマシンに分散された復元力のあるインメモリーのデータセットに対してユーザーが計算を実行できるようにします。大規模なデータセットをすばやく処理するための世界記録を獲得しており、現在Apache Foundationの最も活発なプロジェクトの1つです。 Sparkは、永続化メカニズムとして使用できるさまざまなテクノロジをサポートしています。最も興味深いのはApache Cassandraです。 Cassandraは、高可用性で拡張性の高いストレージが必要な場合に便利な、線形スケーラブルでフォールトトレラントな分散型データストアです。 Apple、Facebook、Netflixのようなハイテク業界の大手企業で頻繁に使用されています。これらの2つの技術は複雑ですが、統合して、企業全体がコンサルタントと開発サービスを提供するこれらの2つの技術の周りに形成したようなレベルの有用性を提供します。

この講演では、SpringアプリケーションでSparkとCassandraをどのように活用できるのか、そしてSpring XDとデータの統合を開始する方法を学びます。 SparkとCassandraについては、上級者から話し合い、プログラムでプログラマチックに動作するようなコード例を紹介します。 Cassandraでの配布とSparkによる一般的なパッケージング問題を回避するためにデータを適切にモデリングする方法と、それらを回避する方法など、これらのテクノロジを扱うときに実行する落とし穴について説明します。最後に、ThirdChannelの現実の世界でこれらのテクノロジーをどのように使用しているかを見ていきます。

Introducing Spring Auto REST Docs

by Florian Benz 11:30am to 12:20pm

この講演では、Spring REST Docsの拡張版Spring Auto REST Docsを紹介します。我々はSpring REST Docs拡張機能を1.5年以上使用しており、最近オープンソース化しています。 … Spring Auto REST Docsはテスト、イントロスペクション、Javadocを使用して自動的にリクエストを文書化します応答パラメータ。これでどれくらいの労力を費やしたのか、それがドキュメントの品質をどのように高めたのかを見ていきます。 Sprint Auto REST Docsは、コードとドキュメントの密接な結合を提案しています。このようにして、ドキュメントを最初に追加し、プラットフォームが進化するにつれて最新の状態に保つことが容易になります。プレゼンテーションでは、エクステンションの使い方を説明し、提案されたアプローチの賛否両論について議論します。現実の実装として独自のシステムを提示し、テスト、Bean検証、Javadocの再利用のメリットとAsciiDocの自由度を活かしドキュメントを生成します。

It’s a kind of magic: under the covers of Spring Boot

by Stéphane Nicoll and Andy Wilkinson 11:30am to 1:20pm

Spring Bootの最も強力な機能の1つは、オートコンフィギュレーションです。 この魔法は、Java開発者の生産性を大幅に向上させたコンベンション・オーバー・コンフィグレーションのアプローチの鍵です。 しかし、それは本当に魔法でしょうか? 私たちはそうは思わない。

このセッションでは、Spring Bootの中を見ていきます。 オートコンフィギュレーションとそれを強化する条件付き構成モデルについて学習し、Springブートアプリケーションを作成する際の生産性を向上させます。

Leveraging Domain Events in your Spring Boot Microservices [WORKSHOP]

by Michael Plöd

ドメインイベントはDomain-Driven Designの内部ビルディングブロックの一部であり、疎結合のMicroservice環境の実装でも中心的な役割を果たします。このワークショップでは、ドメインイベントの概念について深く掘り下げ、ドメインイベントをモデル化して設計する方法と、Springブートアプリケーション間の内部と外部の通信にそれらをどのように使用できるかについて学びます。

ワークショップは、スライドを使った理論的説明と、実践的なライブコーディングパートで構成され、Spring Bootでドメインイベントを扱う方法を学びます。ワークショップは、Event SourcingやCQRSなどのトピックを簡単に見ていきます。

Functional web applications with Spring and Kotlin

by Sébastien Deleuze

この新しい話題では、KotlinとSpring Framework 5を活用して機能的なWebアプリケーションを効率的に構築する方法を紹介します。

私は徐々にあなたのSpring Boot 1.0 Javaプロジェクトを新しいWebFlux機能Webフレームワークの上で動作するSpring Boot 2.0 Kotlinプロジェクトに変換する方法を徐々に説明します:
- ステップ1:Java 8の代わりにKotlinを使用する
- ステップ2:Spring Framework 5およびSpring Boot 2.0にアップグレードする
- ステップ3:Spring MVCからWebFluxおよびReactive APIに切り替える
- ステップ4:WebFlux機能APIを使用する

この講演では、Spring Framework 5で導入された公式のKotlinのサポートについて詳しく説明し、MiXiTカンファレンスのために過去6ヶ月間構築したSpring + Kotlinの機能的Webアプリケーション[2]を実演する予定です。

[1] https://spring.io/blog/2017/01/0 ...
[2] https://github.com/mixitconf/mixit

Setting up a scalable CI platform with jenkins, docker and rancher in 50 minutes

by Rainer Burgstaller and Wolfgang Brauneis

あなた自身のCIシステムをローリングすることは容易ではありません。 Gitlab CI、CodeShip、Drone.io、travisなどの新しいソリューションやテクノロジーの登場により、適切なソリューションの選択はますます難しくなっています...

しかし、特定のニーズがある場合、ジェンキンスの柔軟性と比較できるソリューションはほとんどありません。 jenkinsインスタンスの設定、設定、管理は、特に、異なる開発環境(Java、Node.js、go、...)を使用している複数のチームをサポートしている場合、面倒な仕事になる可能性があります。多くの場合、プロジェクトごとにシステムを手作業でチューニングし、更新を維持するには数日かかることがあります。

このセッションでは、ランチャークラスタを設定する方法、多数のホスト上でjenkins swarmを使用してjenkinsを実行する方法、すべてのビルドジョブはコード(jenkinsfile)を使用して構成されているため、gitの履歴ですべての変更が考慮されます。
ドッキングされたビルド・コンテナを使用するため、すべての可能なビルド環境をサポートするのが簡単になります。

デモとして、舞台環境に構築、テスト、ドッキング、展開される春に基づいたWebアプリケーションを使用します。

LDAP認証、SSH鍵交換、自動DNS更新など、より詳細なトピックを許可する時間について説明します。

このセッションを最大限に活用するには、ドッカーとドッカーの作成を強く理解することをお勧めします。

Build complex Spring Boot microservices architecture using JHipster [WORKSHOP]

by Deepu K Sasidharan

JHipster(https://jhipster.github.io/)は、シンプルなWebアプリケーションや複雑なマイクロサービスを数分で作成するために広く使用されているオープンソースのアプリケーションジェネレータプラットフォームです。

JHipsterは複雑なマイクロサービスアーキテクチャを簡単に生成できます。

JHipsterには、可能であると思ったよりも速くアプリケーションを生成、コード化、展開するためのツール、ヒント、アイデアが満載されています。

DeepH KS(JHipsterプロジェクトの共同リード)が、JHipsterを使用してゲートウェイ、サービス、レジストリ、および監視機能を備えたフルハンドのマイクロサービスアーキテクチャを作成し、Dockerで展開する方法を紹介します。ライブコーディングワークショップが開催されます

Splitting component containers to simplify dependencies

by Eugene Petrenko

モノリシックアプリケーションが大きければ大きいほど、依存性セットは大きくなります。依存関係を追加または変更するのは難しい作業です。同様に、複雑さは多くのBeanとコンポーネントコンテナ内の依存関係にあります。

この講演では、コンポーネントコンテナをより小さなコンポーネントに分割することで、単純化する方法について説明します。
モノリシックのApplicationContextをいくつかのサブコンテキストに分割する方法、サブコンテキストの内部Beanを分離する方法、APIをクリアする方法、および非自明な依存関係を回避する方法について説明します。
それぞれのサブコンテキストは独自のクラスパスを持つことができ、それは依存関係の問題に対処します。
分割された後、モノリシックシステムは、一連のマイクロサービスまたはプロセスに分割しやすくなります。
トークから、参加者は、コンポーネントコンテナをより小さいコンポーネントコンテナに分割するための実践的なヒントとヒントを学びます

TDD with Spring Boot - Testing the Harder Stuff

by Sannidhi Jalukar

キャッシングのような難しい問題をテストする方法や、外部API呼び出しを行わずに統合テストを書く方法を知りましたか?または、何かをテストすることが非常に難しく、決してテストされなかったという状況に遭遇しましたか?多くの開発者は、軽量ユニットテストの作成方法が不明な状況に遭遇しています。
今回のプレゼンテーションでは、Spring起動アプリケーションのテスト駆動開発の方法と、最新のSpring Boot注釈とユーティリティの使い方を簡単に説明します。私たちは過去に私たちを困惑させていた複雑な現実世界のテストシナリオに深く潜り込みます:
データベースクエリ
キャッシング
設定ファイル
フォーム検証
メッセージブローカー

The Road to Serverless: Functions as Applications

by Dave Syer

Spring Cloud機能は、Springブートアプリケーション用の新しいプログラミングモデルを提供し、トランスポートの詳細とインフラストラクチャをすべて抽象化し、開発者がすべての使い慣れたツールとプロセスを維持し、ビジネスロジックにしっかりと集中できるようにします。このプレゼンテーションに参加して、この新しいプロジェクトの機能と、アプリケーションを構築する方法を変更する理由について学びます。

Caching Made Bootiful

by Neil Stevenson

Javaアプリケーションのパフォーマンスをさらに向上させるには?
あなたがストレスの原因となる待ち時間はありますか?アプリケーションでのデータの繰り返し読み込み、CPU時間の消費、I / O /ディスクアクセスの課金?同じデータセットをキャッシュするアプリケーションが多すぎると、データ管理とアプリケーションのアーキテクチャの限界に迫っていますか?もしそうなら、SpringのCache Abstractionを見てください!

このコード駆動型セッションでは、SpringのCache Abstraction機能とAuto Configuration機能を使用してHazelcast Distributed CacheをSpring(Boot)アプリケーションに統合する方法を示します。

JCacheは、キャッシュアクセス用の新しい標準APIで、バージョン4以降、Springが理解できる一連の注釈が付属しています。

メソッドに注釈を追加することで、待ち時間の長いアプリケーションで数十倍の速度向上を達成できます。

このセッションでは、Java / Springアプリケーションでこれらの標準注釈を使用する方法、どの注釈を使用するか、そしてカバーの下で自動的に起こっていることについて紹介します。
あなたは、あなたのコードに12文字を追加するように促されます。

Developing a Spring Boot Starter for distributed logging

分散システムでは、ロギングが重要な役割を果たします。適切に実行された場合は、最も必要なときに役立ちます。現在のプロジェクトをSpring Bootを使用してPivotal Cloud Foundryに移行しています。我々は、我々のシステムの必要に応じてロギングを行うために、あらゆるSpring Bootアプリケーションで使用できる小さなSpring Boot Starterを開発しました。このようにして、チームはアプリケーションのビジネスロジックの開発に専念できます。私たちのSpringブートスターターは、trackingId、サービス名などの重要なロギングメタデータを自動的に記録します。このプレゼンテーションでは、シンプルでパワフルなSpringブートスターターを開発することによって、分散システムのログインの問題に取り組んでいます。

Getting Thymeleaf ready for Spring 5 and Reactive

by Daniel Fernández


CQRS with Spring Cloud Stream [WORKSHOP]

by Jakub Pilimon

(!!!)ワークショップの前に、ここに記載されている手順を完了してください。
https://gist.github.com/pilloPl/ ...

Spring BootとSpring Cloud Streamを使用して、最初からアプリケーションを構築します。シンプルなTwitter publish-subscribeシナリオをシミュレートし、Twitterが以前に持っていた厳密な問題を解決します。また、Twitterを400から8台のサーバに移行するのと同じソリューションを実装する予定です。様子を見よう:
CQRSを活用してモデルの偶発的な複雑さを排除する方法
OOPレベルでCQRSを使用する方法
アーキテクチャレベルでのCQRSの使用方法
Spring Cloud Streamを使用してイベントベースのシステムを実装する方法

そのワークショップの70%を完了するために必要なツール:
IDE
Java 8
グラデル2.12+

ワークショップ全体を完了したい場合:docker-compose(インストール方法:https://docs.docker.com/compose/ ...)

また、ツールなしでワークショップに参加したり、ディスカッションに参加することもできます。フォームは柔軟になります。スライド、図面、ディスカッション、演習などがあります。

Growing Spring-based commons, lessons learned

by Piotr Betkier


Reactive Meets Data Access

by Christoph Strobl

最初の一般公開から約6年後、Spring Data Releaseトレインはコアモジュールの主要なバンプに近づきます。このセッションでは、Java8のベースラインアップグレード、遅延コンポーネントの初期化、反応的なデータアクセスに重点を置いて、Springデータの主要概念を再検討します。コードサンプルは、MongoDBで無限ストリームのような一般的な戦略とストアの詳細を概説しています。


Develop and Run your Spring Boot application on Google App Engine Flexible

by rafaelsf80

Google Cloud Platformで標準のSpringブートアプリケーションを実行する方法をご覧ください。シームレスなスケーラビリティと統合されたツールをテストおよび診断に使用して、実稼働環境でアプリケーションで起こっていることを把握する方法を実証します。この講演では、Google App Engineの柔軟性とKubernetesという2つのアプローチを使用して、ビルドツールを使用してアプリケーションをクラウドにデプロイすることで、この流れを説明します。

From Zero to Open Source Hero: Contributing to Spring projects

どんな種類のアクティビティでも、始めることはしばしば最も難しく、オープンソースプロジェクトに貢献することも例外ではありません。あなたの貢献をキックスタートする方法を見つけるために、Springプロジェクトの定期的な貢献者がこのトークに参加してください!

このセッションでは、オープンソースコミュニティーとSpringプロジェクトの貢献者としての著者の旅についての話です。最初のプルリクエストを作成してから14ヶ月も経たないうちに、Spring Sessionのコミッターになる見通しです。このセッションでは、フォークの管理、プルリクエストの更新、テストの作成、コードの一貫性などのトピックの重要性を強調し、Springプロジェクトへの一般的なプルリクエストの背後にあるワークフローについて深く掘り下げて説明します。貢献は成功した経験です。


Manage distributed configuration and secrets with Spring Cloud and Vault

by Andreas Falk

最近、マイクロサービスの複数のインスタンスをドッキング・イメージまたはクラウドで実行することが広く採用されています。

しかしあなたの設定と秘密はどうですか?アプリケーションのローカルプロパティファイルを使用してすべての値を分散しますか?秘密を平文で保存していますか?
パスワードを暗号化している場合は、これらを解読するために鍵をどこに保存しますか?すでにデータベースの資格情報を定期的にローテーションしていますか?

このセッションでは、Springクラウド設定を使用して設定を外部化し、最近リリースされたSpring Cloud Vault設定プロジェクトを使用して秘密を安全に保存する方法を学習します。
最初に、すべてのアプリケーション設定値をgitリポジトリに外部化する方法について簡単に説明します。

次に、ボールトへの一般的な導入後に、スプリングクラウドボールト設定がどのようにしてボールトのアプリケーションへの統合を容易にするかを確認します。

このセッションの後、あなたは外部化された構成の使用を開始し、秘密を安全でない方法で保存するのをやめさせてくれることをうまく覚悟しています。