JSUG勉強会 2020年その6 LT大会 に行ってきた #jsug

先日、JSUG勉強会 2020年その6 LT大会 に参加しました。今回はオンライン開催。簡単に所感をまとめます。

jsug.doorkeeper.jp

所感

今回は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入門

  • Armeria
  • 既存の Java アプリに組み込んで使える
  • LINEではよく使われている

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)☆
    • Contract = API の規約
    • 契約通りに API サーバーが実装されているかテストする
    • 契約に基づいたスタブを作成してテストする
  • Spring Cloud Contract☆
  • 契約/スタブは Maven リポジトリで後悔される
  • スタブモード: LOCAL or REMOTE
  • JVM 言語以外でも CDC をサポートしている
    • Docker で Java のレイヤーを抽象化
  • Contract がドキュメントになる

コンテナ時代のデプロイメントパイプラインのさわり

miro.com

  • コンテナイメージと JAR の違い
    • ビルド時間, サイズ, 作成方法, コンテナ基盤の都合, ...
  • Repository
    • コンテナ運用の場合は必須
  • AWS ECR ⇒ ECS
    • Pipeline から直接渡さない
    • レジストリを経由してデプロイ
  • bootBuildImage☆
  • 環境要因をイメージに含めるのは避けるべき
  • 最初はイメージをデプロイするところを作る☆
    • ビルドのところはビルドツールに任せる
  • 秘匿情報の扱い
    • コンテナに含めるか含めないか

Azure Spring Cloud 5分クッキング

  • マイクロサービス開発で用意するものが多くて大変
  • Azure Spring Cloud
    • マイクロサービスアーキテクチャを構築するためのプラットフォーム
    • 周辺サービスがフルマネージドで提供されている
    • 基盤は k9s
  • IDEA からデプロイ可 zipkin.sender.type=web
    • プラットフォーム側に HTTP のトレースが送られる