$30 off During Our Annual Pro Sale. View Details »

(10分版)モダンアプリケーションにおける分散トランザクションの動機と実装パターン

 (10分版)モダンアプリケーションにおける分散トランザクションの動機と実装パターン

AWS Summit TokyoのLTでお話ししました!AWSサービスの話はほとんどないです。

Yuji Nomura

April 25, 2023
Tweet

More Decks by Yuji Nomura

Other Decks in Programming

Transcript

  1. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.
    T O K Y O | A P R I L 2 1 , 2 0 2 3

    View Slide

  2. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.
    © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.
    モダンアプリケーションにおける
    分散トランザクションの
    動機と実装パターン
    Yuji Nomura
    M I N I - 8
    Sr. Solutions Architect, Enterprise Majority Focused
    Amazon Web Services Japan

    View Slide

  3. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.
    • モダンアプリケーションの⽬的とトランザクションへの影響
    • トランザクション分割の⽅針
    • (分散)トランザクション実装パターン
    ⽬次

    View Slide

  4. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.
    © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.
    モダンアプリケーションの⽬的と
    トランザクションへの影響

    View Slide

  5. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.
    アプリケーションのモダン化
    モダンなアプリケーションアーキテクチャといえば︓
    • マイクロサービス
    • サーバーレス
    • コンテナ
    → ⽐較的⼩さなデプロイ単位で独⽴して運⽤するための仕組み

    View Slide

  6. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.
    デプロイ独⽴性のメリット
    • チームの⾃律
    • 開発からリリースまでのスピード感
    • 可⽤性・スケーラビリティ・弾⼒性

    View Slide

  7. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.
    サービスA サービスB
    A⽤ B⽤ ⾃分のエリアを跨いだ
    やりとり
    サービスAPI
    マイクロサービスの性質を考えてみる

    View Slide

  8. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.
    サービスA サービスB
    A⽤ B⽤
    変更が伝播
    サービスAPI
    マイクロサービスの性質を考えてみる

    View Slide

  9. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.
    A⽤ B⽤
    • 直接更新はできない
    • 要件⾃体は残る
    サービスA サービスB
    サービスAPI
    マイクロサービスの性質を考えてみる

    View Slide

  10. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.
    © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.
    トランザクション分割の⽅針

    View Slide

  11. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.
    開発者たちは、アトミックな変更が必須であると
    洗脳されているのが⼀般的だ。
    (しかし)ドメインエキスパートたちは整合性を
    保つのに時間がかかったとしても、それが合理的な
    遅延であれば受け⼊れてくれるものだ。
    実践ドメイン駆動設計 / Vaughn Vernon
    第⼗章 集約 10.5.「ルール︓境界の外部では結果整合性を⽤いる」

    View Slide

  12. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.
    整合性の種類
    同期 強整合性
    ⾮同期 結果整合性

    View Slide

  13. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.
    まず結果整合性を検討する
    • 結果整合なトランザクション伝播の検討
    § ビジネス整合性を保てるようにシステムの形を変更
    • 結果整合性が受け⼊れられない場合
    § トレードオフを受け⼊れて結合度の⾼い⽅法を選択
    § サービス境界の⾒直し

    View Slide

  14. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.
    © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.
    (分散)トランザクション
    実装パターン

    View Slide

  15. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.
    トランザクションを分割するパターン
    コレオグラフィ オーケストレーション
    同⼀DBの
    トランザクション処理
    データの関係性
    後続処理失敗の前段への影響
    ⼀貫性
    Saga パターン
    疎 密
    無し 多⼤
    強い
    弱い
    ⼆相コミット
    結果整合 強整合
    情報共有的な
    データ伝播
    Event

    View Slide

  16. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.
    トランザクションを分割するパターン
    コレオグラフィ オーケストレーション
    同⼀DBの
    トランザクション処理
    データの関係性
    後続処理失敗の前段への影響
    ⼀貫性
    Saga パターン
    疎 密
    無し 多⼤
    強い
    弱い
    ⼆相コミット
    結果整合 強整合
    情報共有的な
    データ伝播
    Event

    View Slide

  17. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.
    トランザクションを分割するパターン
    コレオグラフィ
    同⼀DBの
    トランザクション処理
    データの関係性
    後続処理失敗の前段への影響
    ⼀貫性
    Saga パターン
    疎 密
    無し 多⼤
    強い
    弱い
    ⼆相コミット
    結果整合 強整合
    オーケストレーション
    情報共有的な
    データ伝播
    Event

    View Slide

  18. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.
    ⼆相コミットはトレードオフを気にする
    • ⼆相コミットのリスク︓
    • ロックの待ち時間によるレイテンシーの増加
    • 通信障害などによるロック状態の固定
    第1フェーズ 第2フェーズ
    commit
    OK?
    OK!
    commit! 更新
    更新

    View Slide

  19. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.
    CAP定理を思い出してみると
    何かを犠牲にしなくてはならない
    • 一貫性(Consistency)
    • 可用性(Availability)
    • 分断耐性(Partition tolerance)
    マイクロサービス化において分断耐性は絶対に外せない
    可用性も落とせない
    そうすると一貫性がどうしても犠牲になる

    View Slide

  20. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.
    トランザクションを分割するパターン
    コレオグラフィ
    同⼀DBの
    トランザクション処理
    データの関係性
    後続処理失敗の前段への影響
    ⼀貫性
    Saga パターン
    疎 密
    無し 多⼤
    強い
    弱い
    ⼆相コミット
    結果整合 強整合
    オーケストレーション
    情報共有的な
    データ伝播
    Event

    View Slide

  21. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.
    Saga パターン
    ユーザー
    リクエストサービ

    リクエストキュー
    サービスA
    サービスB
    サービスC
    サービスA
    サービスB
    サービスC

    View Slide

  22. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.
    トランザクションを分割するパターン
    情報共有的な
    データ伝播
    コレオグラフィ
    同⼀DBの
    トランザクション処理
    データの関係性
    後続処理失敗の前段への影響
    ⼀貫性
    Saga パターン
    疎 密
    無し 多⼤
    強い
    弱い
    ⼆相コミット
    結果整合 強整合
    Event
    オーケストレーション

    View Slide

  23. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.
    event
    [i-ʼvent] 名詞
    状態が変更されたことを⽰す
    シグナル

    View Slide

  24. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.
    イベントは観察可能であり、指⽰ではない
    コマンドの指⽰
    請求書を
    発⾏して
    ください。
    承知
    しました
    イベントの観察
    Xさんが今
    ⼩物を注⽂
    しました
    請求書を
    送ります
    セールスレポート
    に追加します。

    View Slide

  25. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.
    信頼性、弾⼒性、独⽴したスケール性
    注⽂
    サービス
    請求
    サービス
    ⼊⾦
    サービス
    販売予測
    サービス
    プロデューサ
    コンシュー

    イベントルー
    ター
    ルーティング/
    フィルタ/
    ルール
    キュー
    キュー
    キュー

    View Slide

  26. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.
    まとめ
    • デプロイ独⽴性を考えるとデータベースの分割の観点から
    トランザクションが問題になってくることがある
    • 結果整合性を重視したアプリケーション設計を考える
    • 分散トランザクションの実装パターンは⾊々⽅法があるので
    要件によって使い分ける

    View Slide

  27. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.
    Thank you!
    © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.
    Please complete the session
    survey in the mobile app
    Yuji Nomura
    [email protected]
    twitter: @ugnomura

    View Slide