プライベート エンドポイントを持つ VNet でのサーバーレス イベント ストリーム処理

Azure Private Link
Azure Event Hubs
Azure Functions
Azure Cosmos DB

ソリューションのアイデア

このアーティクルはソリューションのアイデアです。 このコンテンツにさらに多くの情報 (想定されるユース ケース、代替サービス、実装に関する考慮事項、価格ガイダンスなど) の掲載をご希望の方は、GitHub のフィードバックでお知らせください。

この記事では、仮想ネットワーク内で、データのストリームを取り込んで処理し、その結果をデータベースに書き込む、サーバーレス イベントドリブン アーキテクチャについて説明します。

アーキテクチャ

データが VNet に送られてから、この記事で説明するアーキテクチャによって処理される様子を示す図。

データフロー

  1. VNet 統合は、すべての Azure リソースを Azure プライベート エンドポイントの背後に置くために使用されます。
  2. イベントが入力イベント ハブに到達します。
  3. バッチ解除とフィルター処理の Azure 関数がトリガーされ、イベントを処理します。 この手順では、出力イベント ハブに送信する前に、必要のないイベントをフィルター処理で除外し、受信したイベントをバッチ解除します。
  4. バッチ解除とフィルター処理の Azure 関数でイベントを正常に保存できなかった場合、イベントは配信不能イベント ハブ 1 に送信されます。
  5. 出力イベント ハブに到達したイベントにより、変換の Azure 関数がトリガーされます。 この Azure 関数により、イベントは Azure Cosmos DB インスタンス用のメッセージに変換されます。
  6. イベントが Azure Cosmos DB データベースに保存されます。
  7. 変換の Azure 関数でイベントを正常に保存できなかった場合、イベントは配信不能イベント ハブ 2 に保存されます。

注意

わかりやすくするために、サブネットは図に表示されていません。

Components

  • Azure プライベート エンドポイントは、Azure Private Link を使用するサービスに、プライベートで安全に接続するためのネットワーク インターフェイスです。 プライベート エンドポイントでは、自分の VNet からのプライベート IP アドレスを使用して、サービスを実質的に VNet に取り込みます。
  • Event Hubs は、データ ストリームを取り込みます。 Event Hubs は、高スループットのデータ ストリーミング シナリオ用に設計されています。
  • Azure Functions はサーバーレス コンピューティングの 1 つのオプションです。 ひとまとまりのコード ("関数") がトリガーによって呼び出されるイベント ドリブン モデルが使用されます。
  • Azure Cosmos DB は、サーバーレスの使用量ベース モードで使用できるマルチモデルのデータベース サービスです。 このシナリオでは、Azure Cosmos DB for NoSQL を使って、イベント処理関数によって JSON レコードが格納されます。

シナリオの詳細

このソリューション アイデアでは、データのストリームを取り込み、データを処理して、その結果をバックエンド データベースに書き込む、サーバーレス イベント ドリブン アーキテクチャの 1 つのバリエーションについて説明します。 この例では、すべての Azure リソースがプライベート エンドポイントの背後に置かれている仮想ネットワーク内にソリューションがホストされています。

サーバーレス イベント処理の基本的な概念、考慮事項、方法の詳細については、「サーバーレスなイベント処理」の参照アーキテクチャを参照してください。

考えられるユース ケース

エンドツーエンドのイベント ストリーム処理パターンを実装する一般的なユース ケースには、Event Hubs のストリーミング インジェスト サービスにより、イベントを毎秒受信して、処理するというものがあります。これには、Event Hubs によってトリガーされる高度にスケーラブルな関数によって実装される、バッチ解除と変換のロジックが使用されます。

共同作成者

この記事は、Microsoft によって保守されています。 当初の寄稿者は以下のとおりです。

プリンシパル作成者:

  • Rajasa Savant | シニア ソフトウェア開発エンジニア

パブリックでない LinkedIn プロファイルを表示するには、LinkedIn にサインインします。

次の手順