デカップル・メッセージング・パターン - AWS の規範的ガイダンス

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

デカップル・メッセージング・パターン

このパターンは、非同期ポーリングモデルを使用して、マイクロサービス間の非同期通信を提供します。バックエンドシステムはコールを受信すると、リクエスト識別子で即時に応答し、リクエストを非同期的に処理します。疎結合アーキテクチャを構築できるため、同期通信、遅延、入出力操作 (IO) によるボトルネックを回避できます。パターンのユースケースでは、Amazon Simple Queue Service (Amazon SQS) と Lambda を使用して、異なるマイクロサービス間の非同期通信を実装します。

次の場合は、このパターンを使用することを検討する必要があります。

  • 疎結合アーキテクチャを作りたい。

  • すべての操作は 1 つのトランザクションで完了する必要はなく、一部の操作は非同期にすることができます。

  • 1 秒あたりのトランザクション (TPS) の受信レートは、ダウンストリームシステムでは処理できません。メッセージはキューに書き込まれ、リソースの可用性に基づいて処理できます。

このパターンの欠点は、ビジネストランザクションアクションが同期していることです。呼び出し元のシステムが応答を受信しても、トランザクションの一部は引き続きダウンストリームシステムによって処理されることがあります。

重要

このパターンは fire and-forget モデルに適しているため、このサービスを呼び出すクライアントは、リクエスト ID を使用してトランザクションステータスを取得して、実際のサービスをポーリングする必要があります。

ユースケース

このユースケースでは、保険システムには、毎月の支払いが行われた後、顧客取引の詳細で自動的に更新される販売データベースがあります。次の図は、デカップル・メッセージング・パターンを使用してこのシステムを構築する方法を示しています。


          メッセージングパターンを切り離す

ワークフローは、以下のステップで構成されています。

  1. フロントエンドアプリケーションは、ユーザーが毎月の支払いを行った後、支払い情報を使用して API Gateway を呼び出します。

  2. API Gateway は、支払い情報を Amazon Aurora データベースに保存し、メッセージ内のトランザクションの詳細を「Sales」Amazon SQS に書き込み、呼び出しシステムに成功メッセージで応答する「顧客」Lambda 関数を実行します。

  3. 「Sales」Lambda 関数は SQS メッセージからトランザクションの詳細を取得し、売上データを更新します。販売データベースを更新するための失敗と再試行ロジックは、「Sales」Lambda 関数の一部として組み込まれています。