先日、JSUG勉強会 2020年その6 LT大会 に参加しました。今回はオンライン開催。簡単に所感をまとめます。
所感
今回はLT大会ということで幅広い内容が聴けてよかったです。Liveness / Readiness や Graceful Shutdown のあたりは前回の JSUG 勉強でも話があったけど、内部の仕組みの話が聴けて参考になりました。SmartLifecycle インタフェースとか使う機会あるか分からないけど存在を知れてよかった。
Armeria は初めて知りました。あと、Azure Spring Cloud の話を聴いたのも初めてかも。
AWS と Spring アプリケーションのパターン集は知見が詰まっててすごい。あとで見てみよう。CDC は去年の Spring Fest でセッションがあったけど、とても便利そう。契約がドキュメント代わりになるのかー。用途として Swagger とかと少し重なるところがあるのかな。
Baeldung はベルダンって読むのか。(今まで気にしたことなかったけど)
YouTube の URL はこちら。
https://youtu.be/ojCaNdtEjVkyoutu.be
以下、メモから抜粋。
Spring BootユーザのためのArmeria入門
Spring Boot 2.3のLiveness & Readiness Probes 対応について調べてみた
- Liveness: アプリの内部状態
- Readiness: トラフィックを処理できるか
- Actuator のヘルスチェックで状態を取得
- k9s 以外の環境でも活用できる
- k9s 環境では自動で有効になる
- 2.3.2 からプロパティが変わっている
- Liveness と Readiness の状態の組み合わせでヘルスチェックの結果が変わる☆
- 設定ありなしでヘルスチェックが UP になるタイミングが違う☆
- 起動 > EventPublishingRunListener, ...
- 取得 > ApplicationAvailability
- 変更 > AvailabilityChangeEvent
AWSで作るSpringアプリケーション開発
- AWS + Spring アプリケーションのパターン集
- CI/CD, デプロイ
- Spring アプリから CloudFormation でリソースを作成☆
- S3 ダイレクトアクセス
- 署名を付けたり
- マイクロサービス
- OIDC/OAuth2
今から始めるWebClient
- Spring MVC + WebClient
- RestTemplate は 5.0 でメンテナンスモードに☆
- WebClient.Builder☆
- Servlet API で使う場合は最後に block を呼び出す
- リアクティブ型から通常のオブジェクトを取得
- カスタマイズ☆
- WebClientCustomizer インタフェース
- ReactorNettyHttpClientMapper (WebClient 内部で使用している HttpClient)
- 今後、新規で使うなら WebClient を使うとよい
Spring Boot × Spring Session × Herokuでオンライン研修に役立つアプリを自分で作った話
- Spring Boot + jQuery
- Spring Session でセッション共有
- セッションは外部のデータストアに保存
- LBで分散しても問題なし
- データストアは Redis, JDBC, Hazelcast
- 通信の暗号化
- HTTPS
- アプリ-データストア (
sslmode=require
)
- Heroku
外国人(ミャンマー)へのSpring Boot教育ノウハウ
- Baeldung (ベルダン)
- 英語で Spring Boot を勉強する
Spring BootのGraceful shutdownって内部でどうやって実現されているの?
- Graceful shutdown
- 安全にサーバーを停止できるように
- JettyWebServer
- GracefulShutdown
- WebServerGracefulShutdownLifecycle☆
- SmartLifecycle インタフェースの stop メソッドから呼ばれる
- SmartLifecycle インタフェース
- ApplicationContext の起動/停止で任意の処理を実行できる
Spring Cloud ContractでCDCをしたい話
- サービスの E2E テストをしたい
- 外部サービスに依存しているときにどうするか
- CDC (Consumer Driven Contract)☆
- Spring Cloud Contract☆
- 契約/スタブは Maven リポジトリで後悔される
- スタブモード: LOCAL or REMOTE
- JVM 言語以外でも CDC をサポートしている
- Docker で Java のレイヤーを抽象化
- Contract がドキュメントになる
コンテナ時代のデプロイメントパイプラインのさわり
- コンテナイメージと JAR の違い
- ビルド時間, サイズ, 作成方法, コンテナ基盤の都合, ...
- Repository
- コンテナ運用の場合は必須
- AWS ECR ⇒ ECS
- Pipeline から直接渡さない
- レジストリを経由してデプロイ
- bootBuildImage☆
- 環境要因をイメージに含めるのは避けるべき
- 最初はイメージをデプロイするところを作る☆
- ビルドのところはビルドツールに任せる
- 秘匿情報の扱い
- コンテナに含めるか含めないか
Azure Spring Cloud 5分クッキング
- マイクロサービス開発で用意するものが多くて大変
- Azure Spring Cloud
- マイクロサービスアーキテクチャを構築するためのプラットフォーム
- 周辺サービスがフルマネージドで提供されている
- 基盤は k9s
- IDEA からデプロイ可
zipkin.sender.type=web
- プラットフォーム側に HTTP のトレースが送られる