Saga パターン - AWS 規範的ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Saga パターン

この saga パターンは、分散アプリケーションの一貫性を確立し、複数のマイクロサービス間のトランザクションを調整してデータの一貫性を維持するのに役立つ障害管理パターンです。マイクロサービスはトランザクションごとにイベントを公開し、イベントの結果に基づいて次のトランザクションが開始されます。トランザクションの成功または失敗に応じて、2 つの異なるパスをたどることができます。

次の図は、saga パターンが AWS Step Functions を使用して注文処理システムを実装する方法を示しています。各ステップ (ProcessPayment「」など) には、プロセスの成功 (「」などUpdateCustomerAccount) または失敗 (SetOrderFailure「」など) を処理するための個別のステップもあります。


        Saga パターン

以下の場合は、このパターンの使用を検討してください。

  • アプリケーションは、緊密に結合することなく、複数のマイクロサービス間でデータの一貫性を維持する必要があります。

  • トランザクションには長期間有効なものがあり、1 つのマイクロサービスが長時間実行されても他のマイクロサービスがブロックされるのは避けたいものです。

  • シーケンス内で操作が失敗した場合にロールバックできる必要があります。

重要

この saga パターンはデバッグが難しく、マイクロサービスの数が増えると複雑さも増します。このパターンには、ロールバックや変更の取り消しを補償するトランザクションを開発および設計する複雑なプログラミングモデルが必要です。

マイクロサービスアーキテクチャへの saga パターンの実装について詳しくは、AWS 規範的ガイダンス Web サイトのAWS Step Functions 使用によるサーバーレス saga パターンの実装を参照してください。