Sagaパターン
分散トランザクションのパターン。2PCの代わりにローカルトランザクションを順に実行し、ロールバック用に補償アクションを定義しておく。
原論文はGarcia-MolinaとSalemによる1987年のもので、もともとは単一データベース内の長時間トランザクション向けだった。2PCが現実的でないマイクロサービス時代に再発見された。流儀は二つある。コレオグラフィ(各サービスがイベントを受けて自分で判断する)と、オーケストレーション(中央のコーディネーターが手順を進める。TemporalやCamundaなど)だ。
得られるのは結果整合性であって、アトミック性ではない。補償処理が失敗したり、順序が狂ったりすることもある。各ステップの冪等性は、あれば嬉しいものではなく必須条件である。