イベント ドリブン ソリューションを設計する

完了

イベントドリブン アーキテクチャを使用すると、既存のコードを変更しなくてもコア アプリケーションに接続できます。 イベントが発生した場合、イベントに応答する特定のコードに対応できます。 イベントドリブン アプリケーションでは、"送信するだけ" の原則が使用されます。 イベントは次のシステムに向けて送信されます。それは、別のサービス、イベント ハブ、ストリーム、メッセージ ブローカーのいずれであってもかまいません。

Tailwind Traders 商品デモ アプリケーションの設計を再検討し、Azure で実行される Web API の使用方法を調べてみましょう。 新しい商品レビューまたはデモ動画がアップロードされたら、商品に関心がある世界中のユーザー デバイス上のすべてのモバイル アプリに通知する必要があります。 Azure Event Grid は、この要件に理想的なソリューションです。

  • レビューまたは動画の公開元は、対象商品に関心があるサブスクライバーについて知る必要はありません。
  • 複数のサブスクライバーがいてもかまわない一対多の関係が必要になります。 サブスクライバーは、対象商品に関心があるかどうかを任意に判断できます。

Azure Event Grid について知っておくべきこと

Azure Event Grid は、 Azure Service Fabric で実行されるフル マネージドのイベント ルーティング サービスです。 Event Grid は、イベント ベースのアプリケーションやサーバーレス アプリケーションを Azure 上により簡単に構築できるようにするために存在します。

サービスの次の特性を確認します。

  • Azure Event Grid によって、すべてのイベントが集約され、任意のソースから任意の送信先へのルーティングが提供されます。

  • Event Grid によって、Azure Blob Storage アカウントなどのソースからイベントが配布されます。

  • イベントは、Azure Functions や Webhook などのハンドラーに配布されます。

  • このサービスでは、多くのソースからのイベントのルーティングと配信を管理します。 このように管理することで、ポーリングが不要になり、コストと待機時間が最小限に抑えられます。

Azure Event Grid のしくみ

次の図は、Azure Event Grid が複数のイベント ソースから複数のイベント ハンドラーへのイベント プロセスを管理する方法を示しています。

Ilustrationg は、Azure Event Grid が複数のイベント ソースから複数のイベント ハンドラーへのイベント プロセスを管理する方法を示しています。

  • Azure Blob Storage などのイベント ソースによって、1 つ以上のトピックを含むイベントにタグが付けられ、イベントが Azure Event Grid に送信されます。

  • Azure Functions などのイベント ハンドラーによって、関心があるトピックがサブスクライブされます。

  • Event Grid によって、どのイベントをどのハンドラーに送信するかを決定するのにトピック タグが調べられます。

  • Event Grid によって、関連するイベントがサブスクライバーに転送されます。

  • Event Grid は、イベントが発生すると反応します。 ただし、変更された実際のオブジェクト (テキスト ファイル、動画、オーディオなど) は、イベント データの一部ではありません。 代わりに、変更されたオブジェクトを参照するために、Event Grid から URL または識別子が渡されます。

Azure Event Grid を使用する際の考慮事項

Azure Event Grid は、イベントドリブン アプリケーション アーキテクチャに理想的なソリューションになりえます。 次の考慮事項を確認して、Event Grid が Tailwind Traders アプリケーション アーキテクチャにどのように役立つのかについて考えてください。

  • 複数のサービスを検討してください。 設計要件を満たす 1 つまたは複数の Azure サービスを選択します。

    Azure サービス 目的 メッセージまたはイベント 使用シナリオ
    Azure Event Grid リアクティブ プログラミング イベントの配信 (個別) 状態の変更に対応する
    Azure Event Hubs ビッグ データのパイプライン イベントのストリーミング (シリーズ) "テレメトリと分散データ ストリーミングを実施する"
    Azure Service Bus 高価値のエンタープライズ メッセージング メッセージ "注文処理と財務トランザクションを実行する"
  • サービスに対して個別のロールを検討してください。 異なる役割を果たすために、Azure サービスの並行使用を調査します。 たとえば、eコマース サイトで、注文の処理に Azure Service Bus、サイトのテレメトリのキャプチャに Azure Event Hubs、イベント (アイテムの出荷など) への応答に Azure Event Grid を使用できます。

  • サービスのリンクを検討してください。 Azure サービスをリンクして、イベントとデータ パイプライン ストリームを形成します。 このシナリオでは、Azure Event Grid は他のサービスのイベントに応答します。 次の図は、複数の Azure サービスをイベントとデータ パイプラインとしてリンクしてデータをストリーミングする方法を示しています。

    Azure Event Hubs、Event Grid、Functions がリンクしてイベントに応答し、データをストリーミングする方法を示す図。

ヒント

Azure Event Grid の探索モジュールを確認することを検討してください。