Pub/Sub メッセージングとは何ですか?
パブリッシュ-サブスクライブメッセージング (または Pub/Sub メッセージング) は、デベロッパーが高度に機能的でアーキテクチャ的に複雑なアプリケーションをクラウドで簡単に構築できるようにする非同期通信モデルです。モダンクラウドアーキテクチャでは、アプリケーションはサービスと呼ばれる、より小さな独立したビルディングブロックに分離されます。Pub/Sub メッセージングは、これらの分散システムに即時のイベント通知を提供します。独立したソフトウェアモジュール間において、スケーラブルで信頼性の高い通信をサポートします。
Pub/Sub メッセージングはどのように機能しますか?
パブリッシュ-サブスクライブ (Pub/Sub) システムには、4 つの主要なコンポーネントがあります。
メッセージ
メッセージは、送信者から受信者に送信される通信データです。メッセージのデータ型は、文字列から、テキスト、動画、センサーデータ、音声、または他のデジタルコンテンツを表す複雑なオブジェクトまで、さまざまです。
トピック
すべてのメッセージには、それに関連付けられたトピックがあります。トピックは、送信者と受信者の間の仲介チャネルのように機能します。そのトピックに関するメッセージに関心のある受信者のリストをメンテナンスします。
サブスクライバー
サブスクライバーはメッセージの受信者です。サブスクライバーは、関心のあるトピックに登録 (またはそのトピックをサブスクライブ) する必要があります。サブスクライバーは、さまざまな機能を実行したり、メッセージを使用して別のことを並行して実行したりできます。
パブリッシャー
パブリッシャーは、メッセージを送信するコンポーネントです。トピックに関するメッセージを作成し、そのトピックのすべてのサブスクライバーに一度だけ送信します。パブリッシャーとサブスクライバー間のこのインタラクションは、1 対多リレーションシップです。パブリッシャーは、ブロードキャストしている情報を誰が使用しようとしているのかを知る必要はなく、サブスクライバーはメッセージがどこから送信されているのかを知る必要はありません。
Pub/Sub メッセージングシステムの機能にはどのようなものがありますか?
パブリッシュ-サブスクライブ (Pub/Sub) パターンで開発されたアプリケーションには、個別のアプリケーションロジックと通信ロジックがあります。メッセージングインフラストラクチャは、パブリッシャーとサブスクライバー間のメッセージ配信を分離し、さまざまなサブスクライバーに非同期的にブロードキャストします。
Pub/Sub 通信システムには、次の主要な機能があります。
プッシュ配信
Pub/Sub メッセージングは、メッセージがメッセージトピックに発行されると、非同期イベント通知を即座にプッシュします。メッセージが利用可能になると、サブスクライバーに通知されます。
複数の配信プロトコル
トピックは、メッセージキュー、サーバーレス機能、HTTP サーバー、メールアドレスなど、複数のタイプのエンドポイントに接続します。
ファンアウト
このシナリオは、メッセージがトピックに送信され、その後にレプリケートされて複数のエンドポイントにプッシュされる場合に発生します。ファンアウトは非同期のイベント通知を行います。それによって、並行処理が可能になります。
フィルタリング
フィルタリング機能により、サブスクライバーはメッセージフィルタリングポリシーを作成できます。これにより、サブスクライバーは、トピックに投稿されたすべてのメッセージを受け取るのではなく、関心のある通知のみを受け取ることができます。
多重化
場合によっては、パブリッシャーがサブスクライバーになることもあります。メッセージストリームを多重化し、内部的に一貫した方法で相互にリンクするシステムを作成できます。
Pub/Sub メッセージングにはどのようなメリットがありますか?
パブリッシュ-サブスクライブ (Pub/Sub) モデルは、いくつかのモダンアプリケーションで必要とされるイベント駆動型アーキテクチャを実現します。イベントを使用して、分離されたサービス間でトリガーおよび通信できます。イベントとは、状態の変化 (または更新) をいいます (ショッピングカートに商品が入れられるなど)。
Pub/Sub メッセージングは、リアルタイムイベントに依拠するアプリケーションを構築するデベロッパーに大きなメリットをもたらします。いくつかのメリットの概要を以下に記載します。
ポーリングを排除する
メッセージトピックを使用すると、プッシュベースの即時配信が可能になり、メッセージコンシューマーが新しい情報や更新を定期的にチェック (またはポーリング) する必要がなくなります。これにより、応答時間の短縮が促進され、遅延が許容されないシステムで特に問題となり得る配信レイテンシーが低減します。
動的ターゲティング
Pub/Sub パターンにより、サービスの検出がより容易かつ自然になり、エラーが発生しにくくなります。アプリケーションがメッセージを送信できるようにピアの名簿をメンテナンスする代わりに、パブリッシャーが行うのは、トピックにメッセージを投稿することだけです。その後、関係者はエンドポイントでトピックにサブスクライブし、これらのメッセージの受信を開始します。複数のサブスクライバーが変更、アップグレード、またはなくなる可能性があり、システムは動的に調整されます。
独立して分離およびスケールする
Pub/Sub は、ソフトウェアの柔軟性を高めます。パブリッシャーとサブスクライバーは分離され、互いに独立して動作するため、個別に開発およびスケールできます。ある月にある方法で注文を処理し、その翌月には別の方法で処理することを選択することもできます。Pub/Sub を使用すると、すべての連携方法を柔軟に変更できるため、機能を追加または変更しても、システム全体で波及効果が生じることはありません。
通信を簡素化する
通信と統合のためのコードは、記述するのが最も難しいコードの 1 つです。パブリッシュ-サブスクライブモデルは、メッセージトピックへの 1 つの接続を使用して、すべてのポイントツーポイント接続をなくすことにより、複雑さを軽減します。トピックはサブスクリプションを管理して、どのメッセージをどのエンドポイントに配信するかを決定します。コールバックが少ない場合には結合が緩くなり、コードのメンテナンスと拡張が容易になります。
耐久性
Pub/Sub メッセージングサービスは、多くの場合、同じメッセージのコピーを複数のサーバーに保存することにより、非常に高い耐久性と少なくとも 1 回の配信を提供します。
セキュリティ
メッセージトピックは、コンテンツを発行しようとするアプリケーションを認証し、暗号化されたエンドポイントを使用してネットワーク経由で転送中のメッセージを保護できるようにします。
Pub/Sub メッセージングのユースケースにはどのようなものがありますか?
パブリッシュ-サブスクライブ (Pub/Sub) メッセージングシステムの一般的なユースケースの概要を以下に示します。
並列非同期処理を実行する
メッセージトピックに発行されたイベントは、複数のワーカーをトリガーして、必要ではあるが無関係なタスクを同時に実行することができます。
アプリケーションとシステムのアラートを配信する
重要な更新と非同期イベント通知を、影響を受けるアプリケーションコンポーネントとユーザーに即座に配信します。
非同期ワークフローを管理する
アプリケーション間でのイベントのリレー、データストア間でのデータの移動、分散キャッシュの更新、またはビジネスシステム内のレコードの更新を行います。
ワークロードのバランスをとる
タスクをバッチ処理して一括処理するか、または大きなタスクを多数の小さなタスクに分割し、メッセージキューイングを使用して作業を複数のワーカー間で分割します。
複数のシステムにログ記録する
イベントを記録して後で分析したり、オペレーションとセキュリティのログをキャプチャしたり、アーカイブしてバックアップやコンプライアンスの要件を満たすことができます。
レプリケーションのためにファンアウトを使用する
本番環境と開発環境の間でデータをレプリケートするか、またはライブデータを使用して開発およびテストします。
サーバーレスアプリケーションを調整する
非同期イベント通知を分散関数とメッセージキューにファンアウトして、サーバーレスアプリケーションのコンポーネントを調整します。
IoT データをストリーミングする
Pub/Sub パターンは、モノのインターネット (IoT) デバイスがインタラクションするための非常に強力な方法です。デバイスは、バックエンドシステムまたは相互に、簡単にデータをストリーミングできます。
メッセージキューと Pub/Sub メッセージングはどのように異なりますか?
メッセージキューは、サーバーレスおよびマイクロサービスアーキテクチャで使用される非同期通信の別の形式です。メッセージは、処理および削除されるまではキューに入っています。メッセージキューでは、送信者はメッセージをやり取りしようとしている相手を知っている必要があります。また、メッセージの順序付けは、システムにボトルネックを生じさせる可能性があります。
対照的に、パブリッシュ-サブスクライブ (Pub/Sub) パターンでは、より柔軟に対応できます。関心のある複数のサブスクライバーは、メッセージを同時および非同期的に受信できます。パブリッシャーは、サブスクライバーが誰であるかを知る必要はありません。メッセージ処理のスケーラビリティと信頼性はより高く、より優れたパフォーマンスが実現されます。
AWS は Pub/Sub メッセージング要件をどのようにサポートできますか?
Amazon Web Services (AWS) には、異なるパブリッシュ-サブスクライブ (Pub/Sub) アプリケーションに使用できる 2 つのサービスがあります。
Pub/Sub API
AWS AppSync は、アプリケーション開発を簡素化するサーバーレス GraphQL および Pub/Sub API を作成するためのフルマネージドサービスです。単一のエンドポイントを作成して、データのクエリ、更新、または発行を安全に行うことができます。
AWS AppSync を使用して構築された Pub/Sub API により、お客様は、サーバーレスな WebSocket 接続を通じて、サブスクライブしている API クライアントにリアルタイムのデータ更新を発行することができます。さまざまなユースケースで魅力的なリアルタイムエクスペリエンスを生み出すことができます。例えば、最新のゲームスコア、財務データ、オーディエンスの参加、投票、地図やプッシュ通知マーケティングなどの位置情報に基づく機能を提供できます。
AWS AppSync で実現できるいくつかのことを次に示します。
- 1 つのネットワークリクエストで、1 つまたは複数のソースやマイクロサービスからデータにアクセスできます
- オフラインでのデータ同期、バージョニング、競合解決を使用して、(オフラインであっても) データをやり取りおよび更新します
- API に対するリクエストと、接続されたクライアントに配信されたリアルタイムのメッセージについての料金のみをお支払いいただきます
Pub/Sub メッセージング
Amazon Simple Notification Service (SNS) を使用すると、Pub/Sub メッセージングモデルを使用してアプリケーションを簡単に構築できます。スケーラブルかつ費用対効果の高い方法で、アプリケーションから顧客または他のアプリケーションにメッセージを送信できます。
Amazon SNS にはいくつかの機能があります。
- 分散システム、マイクロサービス、イベント駆動型サーバーレスアプリケーション間の高スループット、プッシュベース、多対多のメッセージング
- メッセージの暗号化とトラフィックのプライバシー
- 分析、コンピューティング、コンテナ、データベース、モノのインターネット (IoT)、機械学習 (ML)、セキュリティ、ストレージなどの複数の AWS カテゴリにわたるファンアウト機能
今すぐ無料の AWS アカウントを作成して、AWS で Pub/Sub の使用を開始しましょう。