この記事のポイント
- Azure Event Gridは、イベントの発生を検知し適切な処理へと振り分けるフルマネージドなイベント配信サービスです
- MQTTやHTTPプロトコルを通じて、リアルタイムでのイベント通知と処理を実現
- イベントのフィルタリングや再試行機能により、確実な配信と効率的な処理が可能
- IoTデバイスやクラウドサービスなど、様々なイベント発行者とハンドラーに対応
- 基本レベルと標準レベルの料金プランで、用途に応じた選択が可能
監修者プロフィール
坂本 将磨
Microsoft AIパートナー、LinkX Japan代表。東京工業大学大学院で技術経営修士取得、研究領域:自然言語処理、金融工学。NHK放送技術研究所でAI、ブロックチェーン研究に従事。学会発表、国際ジャーナル投稿、経営情報学会全国研究発表大会にて優秀賞受賞。シンガポールでのIT、Web3事業の創業と経営を経て、LinkX Japan株式会社を創業。
システムやアプリケーション間の効率的な連携が重要性を増す中、イベント駆動型アーキテクチャの実現手段として注目を集めているのが、Azure Event Gridです。
本記事では、Azure Event Gridの基本概念から実装方法まで、詳しく解説します。イベントの配信の仕組みやプロトコルの選択、実際の活用シーンまで、具体的な例を交えながら紹介します。
特に、IoTデバイスとの連携やシステム間のリアルタイムな処理など、実践的なユースケースに焦点を当てて説明します。Azure Event Gridを活用したイベント駆動型システムの構築に興味をお持ちの方に、有用な情報を提供できれば幸いです。
目次
Azure Event Gridとは
Azure Event Gridは、イベントベースのアーキテクチャを実現するためのフルマネージドなイベント配信サービスです。
イベント配信サービスとは、アプリケーションやシステム内で発生するさまざまな「イベント」(状態変化やアクションの発生など)をきっかけとして、別のアプリケーションやサービスにリアルタイムで通知し、必要な処理を自動で実行できるようにする仕組みです。
たとえば、画像がアップロードされると、それを契機に画像を圧縮・加工するアプリケーション(Azure Functionsなど)が処理を開始するなどの例があげられるでしょう。
Event Gridを使えば、イベントの発生に応じて適切なアプリケーションやサービスに通知を行うことができます。そのため、異なるサービス間でのスムーズな連携が可能になります。
Azure Event Gridの特徴
Azure Event Gridは、リアルタイムなイベント通知を可能にするサービスです。ここでは、まずAzure Event Gridの特徴についてご紹介します。
AzureEventGridイメージ図
1. イベントルーティング
Azure Event Gridは、発生したイベントを必要な場所へ柔軟に配信し、システム全体の効率を向上させます。
たとえば、特定のイベントをAzure FunctionsやWebフックにだけ送るなど、必要に応じた設定が可能です。また、複数のサービスやカスタムアプリケーションからのイベントをサポートしており、幅広い連携が実現します。
2. リアルタイム処理
リアルタイムでのイベント処理が必要なシステムに適しており、遅延の少ない配信を実現します。例えば、ECサイトでの注文があった際にすぐに通知を送り、迅速に処理を進めることが可能です。
3. 拡張性
Azure Event Gridはイベントの増減に応じて自動的にスケールアップ・ダウンができ、負荷に応じてリソースを最適に調整します。そのため、負荷が増えても安定したイベント処理が可能です。
4. イベントフィルタリング
必要なイベントのみを処理するため、イベント属性に基づいてフィルタリングができます。たとえば、特定のエラーイベントのみを通知したり、重要な情報だけを抽出することができます。
5. イベントの再試行
一時的な障害でイベントの配信が失敗した場合でも、自動で再試行する仕組みがあります。これにより、配信エラーの発生を減らし、イベントが確実に届けられます。
6. カスタムイベントのサポート
Azure Event Gridは、ユーザーのアプリケーション要件に合わせて独自のカスタムイベントを作成し、必要な宛先に届けることができます。
Azureの標準サービスに依存せずに、アプリケーション独自のイベント駆動型アーキテクチャを実現することができます。
Azure Event Gridの動作の流れ
ここでは、Azure Event Gridの動作についての流れと関連する主要な要素についてご説明します。
Azure Event Grid動作流れ(参考:マイクロソフト)
全体の流れ
Azure Event Gridによる動作の流れは以下のとおりです。
- イベント発行者(Apps、Devices、Azure services、Partner appsなど)がイベントを発生させます。
- 発生したイベントは、MQTTまたはHTTPプロトコルを通じてAzure Event Gridに送信されます。
- Azure Event Gridは、受け取ったイベントを設定に応じて特定のイベントハンドラーに振り分けます。
- イベントハンドラー(Azure services、Apps、Webhook)がイベントを受け取り、必要な処理やアクションを実行します。
主要な構成要素
上記流れで登場する主要な構成要素は次のとおりです。
Event publishers(イベント発行者)
イベント発行者とは、システム内で「イベント」を発生させ、他のシステムやサービスに対して通知する役割を持つものを指します。アプリやデバイス、Azure各種サービスがこれに当たります。
例えば、ファイルをクラウドストレージにアップロードするという操作が行われると、アプリケーションは「ファイルがアップロードされた」という「イベント」を発行します。
イベント伝送プロトコル
イベント伝送プロトコルとは、イベント発行者からイベントハンドラーにイベントを送るための通信方法や手段を指します。主にここでは二つのプロトコルが使用されています。
-
MQTT
IoTデバイスやMQTT対応のアプリケーションからイベントを伝送するためのプロトコルです。特に、リアルタイム性が求められるIoTアプリケーションで使用されます。
-
HTTP
一般的なWebアプリケーションやサービスがイベントを送るために使用するプロトコルです。
Event handlers(イベントハンドラー)
イベントハンドラーとは、イベント発行者から送られてきたイベントを受信し、適切なアクションを実行する役割を持つものを指します。
Azureサービスやアプリ、Webhook(特定のイベントが発生した際に、自動的に他のシステムやサービスに通知を送る仕組み)がこれに当たります。
例えば、イベント発行者であるIoTデバイスが異常なデータ(例: 高温、高湿度)を検知したとします。
するとイベントハンドラーであるAzure Functionsはこの異常検知のイベントを受け取り、対応者にリアルタイムでSMSやメール通知を送信し、迅速な対応を促します。
Azure Event Gridの作成
では、ここではAzure Event Gridの作成手順についてご紹介します。
-
Azureポータルにアクセスし、Azureアカウントでサインインします。
Azureポータル画面
-
Azureポータル画面の「リソースの作成」で「Event Grid Topic」で検索し、「Event Grid Topic」をクリックします。
EventGridTopic選択画面
-
「トピックの作成」画面、「基本」タブで適切な設定をします。
「次 : ネットワーク > 」をクリックします。
基本タブ画面
-
「ネットワーク」タブで適切な設定をします。
「次 : セキュリティ > 」をクリックします。
ネットワークタブ画面
-
「セキュリティ」タブで適切な設定をします。
「次 : 詳細 > 」をクリックします。
セキュリティタブ画面
-
「詳細」タブで適切な設定をします。
「確認と作成」をクリックします。
詳細タブ画面
-
「確認と作成」タブで適切な設定がされていることを確認します。
「作成」をクリックします。
確認と作成タブ画面
Azure Event Gridを使用する際の注意点
Azure Event Gridを使用することで多くの利点がありますが、その反面、以下のような注意すべき点も存在します。
-
料金がイベント数に依存
操作単位ごとの従量課金制のため、イベント数が多いとコストが増加します。無料使用量を超えた際の追加料金に注意が必要です。
-
操作は64 KB単位で課金
イベントのデータサイズが64 KBを超える場合、追加で課金されます。データを最適化し、必要最小限のサイズに抑えることでコスト削減が可能です。
-
配信遅延の可能性
高トラフィック時にはイベント配信が遅延することがあるため、リアルタイム性が重要なシステムではスループットユニットの調整が必要です。
-
フィルタリングの設定
必要なイベントのみを送信するフィルタリング機能を活用し、不要なイベントの処理やコストを削減しましょう。
-
適切なレベルの選択
Basic レベルと Standard レベルで対応プロトコルや機能が異なります。MQTTを利用する場合はStandard レベルを選択する必要があります。
Azure Event Gridの活用場面
Azure Event Gridは、さまざまなシナリオで効果的に活用できます。ここでは、実際の利用シーンに基づいて、Azure Event Gridの適用例を紹介します。
- ファイル処理の自動化
Azure Blob Storageに新しいファイルがアップロードされた時点で、自動的にAzure Functionsで画像のリサイズ、テキスト抽出、ファイルの変換などの処理を行うことができます。
- IoTデバイスとのリアルタイム連携
IoTデバイスが一定の条件(温度上昇や異常値検出など)を満たした際に、Event Gridが通知を送信し、管理者にリアルタイムでアラートを送ることで迅速な対応を可能にします。
- システム間のデータ同期
データベースに新しいレコードが追加された際にEvent Gridがそのイベントを受信し、別のシステム(CRMやERPなど)にデータを自動で同期させることができます。そのため、最新情報がリアルタイムで共有されます。
- 自動スケーリングとリソース管理
アプリケーションのトラフィックが急増した際にEvent Gridがイベントを発行し、自動的に仮想マシンをスケールアップさせるなど、リソースの最適化や管理が可能です。
- 開発から本番環境へのデプロイ管理
コードがリポジトリにプッシュされた際に通知を発行し、CI/CDパイプラインをトリガーすることで、自動デプロイメントのフローを構築し、効率的なリリース管理が実現します。
Azure Event Gridの料金体系
さて、ここではAzure Event Gridの料金体系についてご紹介します。
Azure Event Gridには、以下のようにStandard レベルとBasic レベルの2つの料金プランがあります。
Event Grid Standard レベル
Event Grid Standard レベルの料金は、スループットユニットに基づいて決まります。
スループットユニットは、名前空間ごとに設定するイベントを処理するための容量の単位のことです。たくさんのイベントが発生する場合、スループットユニットを増やすことで、Event Gridが一度に処理できるイベント量を増やすことができます。
【利用できる機能】
Standard レベルでは、MQTTブローカー機能やイベントのプル配信とプッシュ配信が利用可能です。
-
MQTTブローカー機能
- MQTTは、主にIoTデバイス向けの軽量な通信プロトコルで、リアルタイムにデータを送受信するのに適しています。
- MQTTは、主にIoTデバイス向けの軽量な通信プロトコルで、リアルタイムにデータを送受信するのに適しています。
-
イベントのプル配信とプッシュ配信
- プル配信: イベントハンドラー側が定期的にEvent Gridを確認して、必要なイベントを「取りに行く」方式です。
- プッシュ配信: Event Gridがイベントを受信した際に、事前設定されたイベントハンドラー(受信側)に自動的に通知を「送る」方式です。
項目 | 価格 | 無料使用量 |
---|---|---|
単位あたりのスループットユニット (1時間あたり) | ¥5.793 | - |
100万MQTT操作単位の価格 | ¥144.81 | 1,000,000 操作/月 |
100万イベント操作単位の価格 | ¥86.883 | 1,000,000 操作/月 |
注
各操作は、64 KB単位のデータごとに課金されます
Event Grid Basic レベル
Basic レベルは、よりシンプルな料金設定で、実行された操作数に基づく従量課金制です。操作には、イベントの公開、カスタムトピックやシステムトピック、ドメインへの配信試行などが含まれます。
項目 | 料金 | 月あたりの無料使用量 |
---|---|---|
100万操作単位の価格 | ¥86.883 | 100,000 操作 |
最新の情報は、こちらを参照してください。
まとめ
本記事では、Azure Event Gridの特徴・動作の流れ・料金体系・活用場面について解説しました。
Azure Event Gridは、イベントベースのアーキテクチャを実現するためのフルマネージドなイベント配信サービスです。イベント駆動型のアーキテクチャを効率的に実現し、サーバーレスアプリケーションや複数システム間の連携、自動化において非常に有用なものです。Azure FunctionsやLogic Appsとの統合により、複雑なイベントフローをシンプルに管理できるため、システムの効率化や運用コストの削減にもつながります。
今後もイベント処理のニーズが増加する中で、Azure Event Gridの重要性はますます高まるでしょう。ぜひAzure Event Gridを導入することで、イベントベースのアーキテクチャを活用し、システムの自動化、リアルタイム対応、そして効率的な業務運用を実現してください。
本記事が、あなたのAzureを用いたクラウド活用の際の参考になれば幸いです。