Loading...
可逆アクションと補償(エージェントサーガ)(Saga)
エージェントの副作用を安全に取り消せるようにするためのパターンです。処理の軌跡をサーガとして構成します。すべての前進アクション(航空券を予約する、カードに課金する、レコードを作成する)には、その業務上の効果を打ち消す補償アクションを対で用意し、各ツールは冪等キーによって冪等にして、リトライやロールバックが作業を重複させるのではなく同じ最終状態を生むようにします。あるステップが途中で失敗した場合、エージェントはシステムを中途半端に適用したまま放置するのではなく、すでに完了したステップの補償を逆順に実行します。サービスをまたいだ自動的な ACID ロールバックは存在しないため、補償は各アクションの論理的な逆操作として明示的に設計します。`durable-execution` とは区別されます。あちらはクラッシュ後も完了まで継続できるように実行を永続化・再実行するものですが、こちらは完了がもはや正しい結果ではなくなったときに、確定済みの副作用を意味的に取り消す方法を定義するものです。
In 30 seconds
- What
- 各アクションに、その業務上の効果を打ち消す明示的な補償アクションを対で用意し、冪等キーによって再試行とロールバックが同じ状態に収束するようにする。
- When to use
- 複数サービスにまたがる多段階ワークフローで、途中の失敗により、自動的なACIDロールバックなしに、すでに確定した副作用を取り消す必要がある場合。
- Watch out
- 補償処理は正しく実装され、常に利用可能でなければならない。壊れていたり欠けていたりすると、システムは自動復旧のないまま不整合な状態に取り残される。
Loading technique guide…