【さがぱたーん】
Sagaパターン とは?
💡 失敗したら巻き戻す、分散システム版の「元に戻す」ボタン
📌 このページのポイント
普通のトランザクションじゃダメなの?
補償トランザクションって具体的にどうやるの?
例えば「注文確定→在庫引当→決済」の流れで決済が失敗したら、「在庫戻し→注文キャンセル」を逆順に実行する。各サービスが「やり直し用の処理」を持っておくんだよ
コレオグラフィとオーケストレーション、どっちがいいの?
サービス数が少ないならイベント駆動のコレオグラフィがシンプル。5つ以上のサービスが絡むならオーケストレーター(指揮者)を置いた方が流れを追いやすいね
一時的にデータがおかしくなるのって大丈夫なの?
そこが設計の腕の見せどころだね。注文ステータスを「処理中」にしておいてユーザーに見せるとか、セマンティックロックという技法で不整合を隠す工夫が大事だよ
まとめ:ざっくりこれだけ覚えればOK!
「Sagaパターン」って出てきたら「失敗したら補償処理で巻き戻す分散トランザクション」と思えればだいたいOK!
📖 おまけ:英語の意味
「Saga Pattern」 = 物語パターン
💬 1987年にHector Garcia-MolinaとKenneth Salemが論文で提唱。長い物語(Saga)のように、一連のステップが順番に進んでいく様子が名前の由来だよ