本文へスキップ

Sagaパターンとは?

さがぱたーん

Sagaパターンとは、マイクロサービス間にまたがる分散トランザクションを、補償処理を組み合わせた一連のローカルトランザクションとして実現する設計パターンのことです。

Sagaパターンは、複数マイクロサービスが関わる長期トランザクションを管理するためのアーキテクチャパターンです。分散システムでは各サービスが独立したデータベースを持つため、従来のACID準拠の二相コミット(2PC)を適用することが困難です。そこで登場したのがSagaパターンで、複数のローカルトランザクションを順番に実行し、失敗時には補償トランザクション(Compensating Transaction)で巻き戻しを行います。

実装方式は主に2種類あります。

  • コレオグラフィ型:各サービスがイベントを発行・購読しながら自律的に連携する。中央コントローラは不要だが、全体フローの把握が難しい。
  • オーケストレーション型:専用のSagaオーケストレーターが各サービスに指示を出してフローを制御する。全体が見やすいが、オーケストレーターへの集中リスクがある。

典型的な例として、ECサイトの注文処理があります。「在庫確保→決済→配送手配」という流れで、決済に失敗した場合は在庫を解放する補償処理が実行されます。最終的な一貫性(結果整合性)を保証する方式であり、厳密なACIDとは異なる点に注意が必要です。

Sagaパターンはマイクロサービス設計において不可欠な知識の一つであり、Apache Kafka、AWS Step Functions、Axon Frameworkなどを使って実装されることが多いです。

使い方・例文

「注文サービスと在庫サービス、決済サービスにまたがる処理をSagaパターンで設計し、決済失敗時には自動で在庫ロールバックが走るようにした」という形でシステム設計の議論に登場します。

この用語をシェア

𝕏 でポスト LINE

最終更新:

関連用語