メッセージング ソリューションを設計する

完了

Azure には、Azure Queue Storage と Azure Service Bus の 2 つのメッセージ ベースのソリューションが用意されています。 Queue Storage は、Azure Storage に多数のメッセージを格納します。 Service Bus は、アプリケーションとサービスを分離するメッセージ ブローカーです。 これらのサービスのさまざまな機能を確認し、実装するサービスを選択する方法を検討します。

Tailwind Traders の設計タスクの 1 つが、商品デモ アプリケーションの設計を推奨することです。 顧客はこのアプリを使用して、ホームセンターの注目商品の最新のヒント、レビュー、手順を取得します。 アプリの設計には、次の 2 つの要件があります。

  • すべてのコンテンツ ファイルがモバイル アプリから確実に Web API にアップロードされるようにします。 ファイルには、テキスト、画像、動画が含まれます。
  • 顧客が新しい商品レビューを投稿したときや動画が追加されたときなど、新しいファイルに関する詳細をアプリに直接配信します。

これらのアプリ要件に対する理想的なソリューションはメッセージベースのシステムです。

Azure Queue Storage について知っておくべきこと

Azure Queue Storage は、Azure Storage を使用して多数のメッセージを格納するサービスです。 このサービスの次の特性を調べます。

Illustration of a storage account with two message queues in Azure Queue Storage.

  • Azure Queue Storage のキューには、数百万のメッセージを含めることができます。

  • キューの数とサイズは、Queue Storage を所有する Azure ストレージ アカウントの容量によってのみ制限されます。

  • Queue Storage のメッセージには、シンプルな REST ベースのインターフェイスを使用して、世界中のどこからでも安全にアクセスできます。

  • キューでは一般に、信頼性の向上、メッセージ配信の保証、トランザクション サポートが提供されます。

Azure Service Bus について知っておくべきこと

Azure Service Bus は、フル マネージドのエンタープライズ メッセージ ブローカーです。 Service Bus は、アプリケーションとサービスを相互に分離するために使用されます。 サービスの次の利点の特性を確認します。

  • Azure Service Bus では、"メッセージ キュー" と"パブリッシュ/サブスクライブのトピック" がサポートされています。

  • Azure Service Bus を使用すると、競合するワーカー間で作業を負荷分散できます。

  • Service Bus を使用して、サービスとアプリケーションの境界を越えてデータを安全にルーティングおよび転送し、制御できます。

  • Service Bus は、高度な信頼性が要求されるトランザクション作業を調整するのに役立ちます。

メッセージ キュー

Azure Service Bus のメッセージ キューは、専用のメッセージング インフラストラクチャ上に構築されたメッセージ ブローカー システムです。 Azure キューと同様に、Service Bus では、ターゲットで受信する準備ができるまでメッセージを保持します。

Illustration that shows a sender and receiver communicating through a message queue.

Azure Service Bus メッセージ キューは、通信プロトコルやさまざまなデータ コントラクトを使用するアプリなどのエンタープライズ アプリケーションを対象としています。

パブリッシュ - サブスクライブ トピック

Azure Service Bus パブリッシュ - サブスクライブ トピックはキューと似ていますが、複数のサブスクライバーが存在できます。 メッセージがトピックに送信された場合は、タスクを実行するために複数のコンポーネントをトリガーできます。

Illustration that shows a sender and multiple receivers communicating through subscriptions.

ビジネス シナリオ

顧客がアプリで動画を視聴しているシナリオを考えてみます。 このアプリは、ユーザー履歴とファン リストの両方をサポートします。 パブリッシュ - サブスクライブ トピック属性を使うことで、両方のアクションをサポートできます。

  • モバイル アプリから Watched トピックにメッセージが送信されます。

  • このトピックには 2 つのサブスクリプションがあります。 最初のサブスクリプションで UpdateUserWatchHistory アクションが完了します。 2 番目のサブスクリプションで UpdateProductFanList アクションが完了します。

  • Watched トピックの各サブスクリプションが、メッセージの独自のコピーを受信します。

メッセージング サービスを選ぶ際の考慮事項

各 Azure メッセージング ソリューションの機能セットはわずかに異なります。 1 つのソリューションを選択するか両方を使用して、設計要件を満たすことができます。 次のシナリオを確認し、Tailwind Traders アプリケーション アーキテクチャに役立つメッセージング ソリューションについて検討します。

メッセージング ソリューション シナリオの例
Azure Queue Storage "メッセージを整理するためのシンプルなキューがほしい"。

"キューを通るすべてのメッセージの監査証跡が必要"。

"キュー ストレージが 80 GB を超えると予想している"。

"キュー内のメッセージ処理の進行状況を追跡したい"。
Azure Service Bus
"メッセージ キュー"
"At-Most-Once 配信保証が必要"。

"At-Least-Once メッセージ処理 (PeekLock 受信モード) が必要"。

"At-Most-Once メッセージ処理 (ReceiveAndDelete 受信モード) が必要"。

"メッセージをトランザクションにグループ化したい"。

"キューをポーリングせずにメッセージを受信したい"。

''64 KB を超えるメッセージを処理する必要がある''。

"キュー ストレージが 80 GB を超えないと予想している"。

"メッセージのバッチを発行および使用したい"。
Azure Service Bus
"パブリッシュ - サブスクライブ トピック"
"各メッセージを処理する複数のレシーバーが必要"。

"1 つのメッセージに対して複数の宛先が想定されるが、キューのような動作が必要"。