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

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

Sagaパターン

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

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


        Sagaパターン

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

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

  • トランザクションは存続期間が長く、1 つのマイクロサービスが長時間実行されても、他のマイクロサービスがブロックされることは避けたいものです。

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

重要

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

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