Sagaパターンとは

Sagaパターンとは、複数のマイクロサービスにまたがるトランザクション処理を、安全かつ確実に実行するための設計パターンのことです。Saga設計パターンとも言います。

Sagaパターンは、マイクロサービスアーキテクチャにおいて、複数のサービスにまたがるトランザクションの一貫性を保証するための設計パターンです。

従来のモノリシックなアプリケーションでは、ACIDトランザクションを用いてデータの一貫性を保証できましたが、マイクロサービスアーキテクチャでは、各サービスが独立したデータベースを持つため、ACIDトランザクションを適用することが困難です。Sagaパターンはこの問題を解決し、分散トランザクションを実現します。

Sagaパターンの中心概念

  • Saga: 一連のローカルトランザクションの集合。各ローカルトランザクションは、特定のサービス内で実行されます。
  • 補償トランザクション: ローカルトランザクションが失敗した場合に、その影響を打ち消すために実行されるトランザクション。Sagaの実行中にエラーが発生した場合、既に成功したローカルトランザクションをロールバックするために補償トランザクションが実行されます。

Sagaパターンの2つの主要なタイプ

  1. コレオグラフィーSaga: 各サービスがイベントを発行し、他のサービスがそのイベントを購読してローカルトランザクションを実行する方式。イベント駆動型アーキテクチャに適しています。コレオグラフィーSagaは、疎結合なサービス間の連携を実現できますが、複雑なSagaの設計やデバッグが困難になる場合があります。
  2. オーケストレーションSaga: 中央のオーケストレーターが各サービスにコマンドを送信し、ローカルトランザクションの実行を指示する方式。オーケストレーションSagaは、Sagaの実行フローを集中管理できるため、複雑なSagaの設計やデバッグが容易になります。ただし、オーケストレーターが単一障害点になる可能性があります。

関連用語

ACID特性| 今更聞けないIT用語集
クラウド | 今更聞けないIT用語集
リファクタリング

お問い合わせ

システム開発・アプリ開発に関するご相談がございましたら、APPSWINGBYまでお気軽にご連絡ください。

APPSWINGBYの

ソリューション

APPSWINGBYのセキュリティサービスについて、詳しくは以下のメニューからお進みください。

システム開発

既存事業のDXによる新規開発、既存業務システムの引継ぎ・機能追加、表計算ソフトによる管理からの卒業等々、様々なWebシステムの開発を行っています。

iOS/Androidアプリ開発

既存事業のDXによるアプリの新規開発から既存アプリの改修・機能追加まで様々なアプリ開発における様々な課題・問題を解決しています。


リファクタリング

他のベンダーが開発したウェブサービスやアプリの不具合改修やソースコードの最適化、また、クラウド移行によってランニングコストが大幅にあがってしまったシステムのリアーキテクチャなどの行っています。