Sagaパターンとは?
さがぱたーん
Sagaパターンとは、マイクロサービス間にまたがる分散トランザクションを、補償処理を組み合わせた一連のローカルトランザクションとして実現する設計パターンのことです。
Sagaパターンは、複数のマイクロサービスが関わる長期トランザクションを管理するためのアーキテクチャパターンです。分散システムでは各サービスが独立したデータベースを持つため、従来のACID準拠の二相コミット(2PC)を適用することが困難です。そこで登場したのがSagaパターンで、複数のローカルトランザクションを順番に実行し、失敗時には補償トランザクション(Compensating Transaction)で巻き戻しを行います。
実装方式は主に2種類あります。
- コレオグラフィ型:各サービスがイベントを発行・購読しながら自律的に連携する。中央コントローラは不要だが、全体フローの把握が難しい。
- オーケストレーション型:専用のSagaオーケストレーターが各サービスに指示を出してフローを制御する。全体が見やすいが、オーケストレーターへの集中リスクがある。
典型的な例として、ECサイトの注文処理があります。「在庫確保→決済→配送手配」という流れで、決済に失敗した場合は在庫を解放する補償処理が実行されます。最終的な一貫性(結果整合性)を保証する方式であり、厳密なACIDとは異なる点に注意が必要です。
Sagaパターンはマイクロサービス設計において不可欠な知識の一つであり、Apache Kafka、AWS Step Functions、Axon Frameworkなどを使って実装されることが多いです。
使い方・例文
「注文サービスと在庫サービス、決済サービスにまたがる処理をSagaパターンで設計し、決済失敗時には自動で在庫ロールバックが走るようにした」という形でシステム設計の議論に登場します。
この用語をシェア
最終更新: