Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kotlin × Spring Boot × DDD のアプリに 非同期処理基盤を導入するまで

nambu
July 18, 2024
150

Kotlin × Spring Boot × DDD のアプリに 非同期処理基盤を導入するまで

nambu

July 18, 2024
Tweet

Transcript

  1. 1 2024.07.18 南部 豪 Kotlin × Spring Boot × DDD

    のアプリに 非同期処理基盤を導入するまで
  2. 2 自己紹介 株式会社ログラス 開発部 エンジニア 南部 豪 / Go Nambu ベンチャー企業2社を経て、2023年9月にログラスに入社

    Loglassのマスタ領域を担うチームのリーダー チームでの業務の傍ら、チーム横断的な働き方も行っている。 - E2E基盤の構築・非同期処理基盤の構築 - 新規開発体制のPoC 犬を愛し、犬に愛される(?)男
  3. 4 4 ©2024 Loglass Inc. アジェンダ ③ 開発体験の設計 ④ リリースとその後の課題

    ② ⾮同期処理基盤の設計 ⑤ 今後の展望 ① ⾮同期処理基盤導⼊の背景
  4. 5 5 ©2024 Loglass Inc. アジェンダ ③ 開発体験の設計 ④ リリースとその後の課題

    ② ⾮同期処理基盤の設計 ⑤ 今後の展望 ① ⾮同期処理基盤導⼊の背景
  5. 9 9 ©2024 Loglass Inc. アジェンダ ③ 開発体験の設計 ④ リリースとその後の課題

    ② ⾮同期処理基盤の設計 ⑤ 今後の展望 ① ⾮同期処理基盤導⼊の背景
  6. 10 10 ©2024 Loglass Inc. 要求仕様 • 既存APIとは別のインフラで処理を実行 ◦ インフラ負荷軽減

    ◦ アプリの安定稼働 非同期で処理を行う以上の要求仕様 • 処理は並列で実行可能 ◦ 既存のAPIでの実行は並列に行えていたため • 監視を行う ◦ 既存の設計に乗れば可能
  7. 16 16 ©2024 Loglass Inc. Queueへの送信 sqsTemplate.send { to ->

    to.queue("my-queue-name").payload(workerTask).headers(headers) }
  8. 18 18 ©2024 Loglass Inc. アジェンダ ③ 開発体験の設計 ④ リリースとその後の課題

    ② ⾮同期処理基盤の設計 ⑤ 今後の展望 ① ⾮同期処理基盤導⼊の背景
  9. 19 19 ©2024 Loglass Inc. 開発体験を阻害しうる2⼤要素 • トランザクションを張る ◦ @Transactionalで解決

    阻害とは? →処理を追加するために必ず実装しないといけないが、扱いが難しい • RowLevelSecurity(RLS)を突破する ◦ APIと同じ解決はできない ◦ 認証情報を持っていないため
  10. 20 20 ©2024 Loglass Inc. 開発体験を阻害しうる2⼤要素 • トランザクションを張る ◦ @Transactionalで解決

    阻害とは? →処理を追加するために必ず実装しないといけないが、扱いが難しい • RowLevelSecurity(RLS)を突破する ◦ APIと同じ解決はできない ◦ 認証情報を持っていないため
  11. 25 25 ©2024 Loglass Inc. アジェンダ ③ 開発体験の設計 ④ リリースとその後の課題

    ② ⾮同期処理基盤の設計 ⑤ 今後の展望 ① ⾮同期処理基盤導⼊の背景
  12. 26 26 ©2024 Loglass Inc. テスト 処理自体をテストし直す必要はない • 既存APIはタスクをSQSに投げるだけとなる 


    • 投げる直前に、排他制御のためにDBの実行ステータスを更新する 
 • タスクを実行してから処理されるまでにタイムラグが発生する 
 • その間に実行タスクの設定が変更されうる 
 • WorkerがSQSからタスクを受け取って処理する 
 • 異常終了した場合にはDLQにタスクが移動する 
 • 移動後、実行ステータスがエラーになる処理が走 る
 処理差分
  13. 27 27 ©2024 Loglass Inc. リリース⽅法 FTを使用 同期・非同期を簡単に切り替え可能に • デプロイとロールアウトを分割できる

    ◦ リリース時はFT更新のみ • 本番検証用テナントで検証できる • 問題ありのときもFT更新のみ
  14. 29 29 ©2024 Loglass Inc. 今後の展望 • 開発組織への伝搬 ◦ ドキュメントの作成

    • 別の処理も基盤に乗せる ◦ 現状5つの処理が移行済み • 1タスク1コンテナでオンデマンド実行 ◦ ネイティブイメージビルドを用いる • より安全なリリース方法 ◦ 現状は、killされてしまう可能性
  15. 30