Sagaパターン
読み方: サーガパターン
Sagaパターンとは
Sagaパターンは、分散システムやマイクロサービスアーキテクチャにおける分散トランザクションの管理方法の一つです。従来のデータベースで使われるACID*トランザクションとは異なり、Sagaパターンは各サービスが独立してトランザクションを実行し、必要に応じて補償操作を行うことで一貫性を保つ手法です。
*トランザクションを定義する4つの重要な特性、Atomicity(原子性)、Consistency(一貫性)、Isolation(独立性)、Durability(永続性)の頭文字をとった略語。
Sagaパターンの基本構成
■一連のステップ
各トランザクション(ステップ)は独立して実行され、成功するか失敗します。
各ステップは他のサービスと連携してデータを変更しますが、全体として一貫した状態を保つ必要があります。
■補償トランザクション
各ステップには補償トランザクションが定義されており、何らかのステップが失敗した場合、そのステップを巻き戻して前の状態に戻す操作が行われます。
■調整の方法
Sagaパターンの調整には、コレオグラフィー(各サービスが自律的に動作し、イベントを基にしてトランザクションを実行)とオーケストレーション(中央のコントローラーが各ステップを管理)という二つのアプローチがあります。
使用例
例えば、eコマースの注文処理において、Sagaパターンを適用するケースを考えます。以下のステップで処理が進みます。
1、注文を作成する
2、支払いを処理する
3、在庫を更新する
4、配送を手配する
どれかのステップで失敗した場合、その失敗に応じた補償トランザクションが実行されます。例えば、支払い処理が失敗した場合は、注文のキャンセルや在庫のリストアが行われるなど。
メリットとデメリット
■メリット
- 各サービスが独立して動作できるため、スケーラビリティが高い。
- 柔軟性があり、各トランザクションの管理が容易。
■デメリット
- 補償トランザクションの設計が難しい場合がある。
- 全体のトランザクション管理が複雑になりがち。
現場の声
複数サービス間でのデータ不整合を防ぐ手法として、他に分散トランザクションもあります。しかし使用技術が制限される点や、サービスが増えるほど可用性が低下する、といった問題があるため、まずSagaパターンを使うことを検討します。
<執筆・監修>
アルサーガパートナーズ株式会社 DX技術用語集制作チーム
(2024年8月時点)