DX技術用語辞典

by Arsaga Partners

Sagaパターン

読み方: サーガパターン

Sagaパターンとは

Sagaパターンは、分散システムやマイクロサービスアーキテクチャにおける分散トランザクションの管理方法の一つです。従来のデータベースで使われるACID*トランザクションとは異なり、Sagaパターンは各サービスが独立してトランザクションを実行し、必要に応じて補償操作を行うことで一貫性を保つ手法です。

*トランザクションを定義する4つの重要な特性、Atomicity(原子性)、Consistency(一貫性)、Isolation(独立性)、Durability(永続性)の頭文字をとった略語。

Sagaパターンの基本構成

■一連のステップ

各トランザクション(ステップ)は独立して実行され、成功するか失敗します。

各ステップは他のサービスと連携してデータを変更しますが、全体として一貫した状態を保つ必要があります。

■補償トランザクション

各ステップには補償トランザクションが定義されており、何らかのステップが失敗した場合、そのステップを巻き戻して前の状態に戻す操作が行われます。

■調整の方法

Sagaパターンの調整には、コレオグラフィー(各サービスが自律的に動作し、イベントを基にしてトランザクションを実行)とオーケストレーション(中央のコントローラーが各ステップを管理)という二つのアプローチがあります。 

使用例

例えば、eコマースの注文処理において、Sagaパターンを適用するケースを考えます。以下のステップで処理が進みます。

1、注文を作成する
2、支払いを処理する
3、在庫を更新する
4、配送を手配する

どれかのステップで失敗した場合、その失敗に応じた補償トランザクションが実行されます。例えば、支払い処理が失敗した場合は、注文のキャンセルや在庫のリストアが行われるなど。

メリットとデメリット

■メリット

  • 各サービスが独立して動作できるため、スケーラビリティが高い。
  • 柔軟性があり、各トランザクションの管理が容易。

■デメリット

  • 補償トランザクションの設計が難しい場合がある。
  • 全体のトランザクション管理が複雑になりがち。

現場の声

複数サービス間でのデータ不整合を防ぐ手法として、他に分散トランザクションもあります。しかし使用技術が制限される点や、サービスが増えるほど可用性が低下する、といった問題があるため、まずSagaパターンを使うことを検討します。

<執筆・監修>

アルサーガパートナーズ株式会社 DX技術用語集制作チーム

(2024年8月時点)