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

Temporalを用いた Sagaの実践とプロセスモデリング_konnさん

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

Temporalを用いた Sagaの実践とプロセスモデリング_konnさん

「Background Job Talk 〜 Temporal 活用と独自実装の舞台裏編〜」でkonnさんが登壇した資料です。
https://upsider.connpass.com/event/382902/

More Decks by UPSIDER, Inc. Tech&Product div.

Transcript

  1. © UPSIDER, Inc. 2 ⾃⼰紹介 • Konn ◦ 新卒でFintech業界を知る •

    2024/11からUPSIDERにJoin ◦ 請求基盤チームの立ち上げメンバー • Gopher歴は5年ほど • Temporal歴1年半ほど • 夜は温泉とマリカ配信で1日をReset
  2. © UPSIDER, Inc. 3 UPSIDERはAI化された総合金融機関へ 当社はこれまで決済事業に特化し、お客様の成長をサポートしてきました。しかし今後は総合金融機関として進化していきます。 挑戦者を応援する法人カード https://up-sider.com/ https://shi-harai.com/ https://breakthrough-grid.com/

    https://ai-keiri.up-sider.com/ https://www.upsidercap.com/ https://president-card.com/ 請求書カード払いサービス ビジネスリーダー向けコミュニティ 経営者のための経理丸投げサービス 経営者の挑戦を支える法人カード グロースデットファンド 与信枠の増枠&広告媒体 仕入れの後払いを実現 Adboost BUSINESS 提供サービス
  3. © UPSIDER, Inc. 7 請求書 債権 入金 消込 仕訳 サービス

    モジュールA モジュールB モジュールC DB データ整合性
  4. © UPSIDER, Inc. 8 請求書 債権 入金 消込 仕訳 Service

    モジュールA モジュールB モジュールC DB DB DB データ整合性
  5. © UPSIDER, Inc. 9 Transaction A Transaction B Transaction C

    Sagaは一連のローカルトランザクションの連鎖として実装する Success Sagaパターン
  6. © UPSIDER, Inc. 10 Transaction A Transaction B Transaction C

    一連のローカルトランザクションの連鎖として実装する Fail compensation B 失敗 compensation A Sagaパターン
  7. © UPSIDER, Inc. 11   Activity Activity Activity Workflow Temporal

    Temporalがオーケストレーターとなる Saga = Workflow Transaction = Activity TemporalでSaga
  8. © UPSIDER, Inc. 12   Activity Activity Activity Workflow Temporal

    Temporalのメリット Sagaの状態自動保存 失敗時の自動リトライ イベント履歴の記録 Sagaの再実行 状態保存、リトライなどは意識しなくて良い。 TemporalでSaga
  9. © UPSIDER, Inc. 14   Activity A Workflow 補償処理自体の失敗は握りつぶして最後まで完遂することを優先する Activity

    B Activity C 失敗   Compensation Compensation B Compensation A fail 失敗 補償の失敗は無視 補償処理の失敗
  10. © UPSIDER, Inc. 15   Workflow 実施するActivityの処理順序を工夫することで補償処理を楽に 失敗しやすい Activity 失敗しやすい

    Activity 決定点 リトライすれば良い Activity 補償 ワークフローは必ず最後まで 処理順序の最適化
  11. Temporalの特徴  Durable • 実行状態を失わない • ダウンタイム後も再開可能  Code-first •

    TypeScript / Go などで記述 • 複雑な業務ロジックを表現  Workflow Collaboration • 役割ごとに分割 • 他ワークフローに Signal送信 結果: 長期、複雑な業務プロセスを安全に表現できる © UPSIDER, Inc. 19