PUB/SUB パターン - AWS の規範的ガイダンス

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

PUB/SUB パターン

プラットフォームが成長すると、相互依存性を持たずに異なるマイクロサービスが相互作用することが困難になる可能性があります。パブリッシュ/サブスクライブ (pub/sub) パターンは、複数の間で非同期通信を提供します。AWS相互依存関係を作成せずに、Amazon SQS、Lambda、Amazon Simple Storage Service (Amazon S3) などのサービス。このパターンでは、マイクロサービスは、ユーザが聴くことができるチャネル内のメッセージとしてイベントをパブリッシュします。たとえば、工場では pub/sub パターンを使用して機器がチャネルに問題や障害を公開できるようにし、加入者はこれらの機器の問題を表示してログに記録できます。

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

  • イベント駆動型のアーキテクチャがあります。

  • 疎結合アーキテクチャを有効にできます。

  • 呼び出し元のシステムへの応答の前に、トランザクションのすべての操作部分を完了する必要はありません(特定の操作は非同期である可能性があります)。

  • 従来のデータセンターの能力を超えるボリュームに拡張する必要があります。このレベルのスケーラビリティは、主に並列操作、メッセージキャッシュ、ツリーベースのルーティング、および pub/sub モデルに組み込まれているその他の機能によるものです。

    このパターンを使用することにはいくつかの欠点があります。たとえば、Amazon Simple Notification Service (Amazon SNS) などの特定のサービスが提供できるものの、通常、Pub/Sub パターンでは、すべてのサブスクライバータイプへのメッセージの配信を保証できません。1 回だけ一部のサブスクライバサブセットへの配信。もう 1 つの欠点は、パブリッシャーが、実際にはチャンネルを聞いていないときに、サブスクライバがチャンネルを聞いていると仮定できることです。

ユースケース

このユースケースでは、SNS トピックを使用して、保険システムの複数の従属マイクロサービスにイベントを公開します。顧客が毎月の支払いを行った後、「顧客」や「セールス」などのサブシステムで情報を更新し、支払い確認を記載した電子メールを顧客に送信する必要があります。このパターンは、Amazon SNS または Amazon EventBridge のいずれかを使用して実装できます。

EventBridge は複数のサブスクライバ間のイベントをフィルタリングします EventBridge の実装には、次の 2 つのオプションがあります。

  • 異なるイベントタイプで 3 つのイベントを送信します。遠いターゲットは、イベントルールに基づいてそれらをピックアップします。

  • 同じイベントタイプをリッスンする 3 つのイベントルールで 1 つのメッセージを送信します。特定のターゲットが呼び出される前に、不要なデータが除外されます。

Amazon SNS 実装

次の図は、Amazon SNS を使用してパブ/サブパターンを実装する方法を示しています。ユーザーが支払いを行った後、「支払い」Lambda 関数によって SNS メッセージが「支払い」SNS トピックに送信されます。この SNS トピックには、メッセージのコピーを受信して処理する 3 人のサブスクライバがあります。


           パブ/サブパターンのAmazon SNS 実装

Amazon EventBridge の実装

次の図では、EventBridge を使用して、サブスクライバがイベントルールを使用して定義される pub/sub パターンのバージョンを構築しています。ユーザーが支払いを行った後、「Payments」Lambda 関数は、異なるターゲットを指している 3 つの異なるルールを持つカスタムスキーマに基づいて、デフォルトのイベントバスを使用して EventBridge にメッセージを送信します。各マイクロサービスはメッセージを処理し、必要なアクションを実行します。


          パブ/サブパターンのAmazon EventBridge の実装