オーケストレーションSagaとは

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

中央のオーケストレーターが各サービスにコマンドを送信し、ローカルトランザクションの実行を指示することで、分散トランザクションを実現します。

オーケストレーションSagaの中心概念

  • オーケストレーター: Sagaの実行を制御する中心的なコンポーネント。各サービスにコマンドを送信し、ローカルトランザクションの実行を指示します。
  • Saga: 一連のローカルトランザクションの集合。各ローカルトランザクションは、特定のサービス内で実行されます。
  • コマンド: オーケストレーターから各サービスに送信される、ローカルトランザクションの実行を指示するメッセージ。
  • 補償トランザクション: ローカルトランザクションが失敗した場合に、その影響を打ち消すために実行されるトランザクション。Sagaの実行中にエラーが発生した場合、既に成功したローカルトランザクションをロールバックするために補償トランザクションが実行されます。

オーケストレーションSagaの仕組み

  1. Saga開始: オーケストレーターがSagaを開始し、最初のサービスにコマンドを送信します。
  2. ローカルトランザクション実行: 各サービスは、受信したコマンドに従ってローカルトランザクションを実行します。
  3. 成功/失敗: ローカルトランザクションが成功した場合、オーケストレーターは次のサービスにコマンドを送信します。失敗した場合、オーケストレーターは補償トランザクションの実行を指示します。
  4. 補償トランザクション実行: 失敗したローカルトランザクションの影響を打ち消すために、補償トランザクションが実行されます。
  5. Saga完了: すべてのローカルトランザクションが成功するか、補償トランザクションが完了すると、Sagaが完了します。

オーケストレーションSagaは、マイクロサービスアーキテクチャにおける分散トランザクションを実現するための強力なパターンです。集中管理、エラー処理、可視性などのメリットがある一方で、オーケストレーターへの依存、複雑性、パフォーマンスなどの課題も存在します。ユースケースに応じて、適切に活用することで、マイクロサービス間のデータ一貫性を保証し、可用性の高いシステムを構築できます

注記: オーケストレーションSagaは、分散トランザクションの複雑さを完全に解消するものではありません。設計と実装には注意が必要です。また、常に厳密な整合性を保証するわけではないため、ユースケースに応じて適切なデータ整合性レベルを選択する必要があります。

関連用語

マイクロサービスアーキテクチャ | 今更聞けないIT用語集
Sagaパターン | 今更聞けないIT用語集
リファクタリング

お問い合わせ

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

APPSWINGBYの

ソリューション

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

システム開発

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

iOS/Androidアプリ開発

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


リファクタリング

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