Writer:安藤 隼人
Event Gridとは?業務対応の自動化やアラート発報などで業務効率化を促進!
さまざまなクラウドサービスやカスタムアプリなどから発生するイベントを取得して、処理を行うサービスがAzureの「Event Grid」です。特定のイベントをトリガーにして処理を起動できるようになり、業務対応の自動化やアラートの発報などに役立てることができます。
ネクストステップにおすすめ
Event Gridとは
Event Gridはイベント(発生した事象に関するメッセージ)を扱うサービスで、さまざまなサービス同士を連携させます。
Event Gridをはじめとするイベントを扱うサービスは、特定処理の開始・完了や異常終了などのイベント受信を契機として、設定された連携すべきサービスやアプリケーションに対してイベントを送付します。イベントを受け取ったアプリケーションまたはサービスは、設定に従って処理を自動で起動します。
これらの働きに加えて、Event GridではAzure内のさまざまなサービスの連携に対応し、操作の自動化およびアプリケーションやサービスの統合などに大きな効果を発揮します。
また定型のイベントだけではなく、独自のイベント(メッセージ)もサポートされているため、Azure CLIやAzure Portalのコンソールを使用すれば用途に合わせたイベント作成も可能です。
Microsoftの公式サイトによると、Event Gridには下記の概念が存在します。
- イベント - 発生内容
- イベントソース - イベントの発生元
- トピック - 発行元がイベントを送信するエンドポイント
- イベントサブスクリプション - イベントをルーティングするエンドポイントまたは仕組み
- イベントハンドラー - イベントに反応するアプリケーションまたはサービス
それぞれの概念を図示すると下記のようになります。この仕組みを通じて発生したイベントがイベントソースからイベントハンドラーへ送付されていきます。
2022年10月現在、イベントソースとして対応しているサービスは以下の通りです。
- Azure API Management
- Azure App Configuration
- Azure App Service
- Azure Blob Storage
- Azure Cache for Redis
- Azure Communication Services
- Azure Container Registry
- Azure Event Hubs
- Azure FarmBeats
- Azure Health Data Services
- Azure IoT Hub
- Azure Key Vault
- Azure Kubernetes Service
- Azure Machine Learning
- Azure Maps
- Azure Media Services
- Azure Policy
- Azure リソース グループ
- Azure Service Bus
- Azure SignalR
- Azure サブスクリプション
同じく2022年10月現在、対応しているイベントハンドラーは以下の通りです。
- Webhook ※
- Azure Functions
- Event Hubs
- Service Bus のキューとトピック
- ハイブリッド接続のリレー
- Storage キュー
※Azure Automation RunbookとLogic AppsはWebhookを介してサポートされます。
これらのイベントソースとイベントハンドラーを個別に設定し、イベントを送信していきます。
Event Gridのメリット
Event Gridは、サーバーレスなアーキテクチャーの構成や操作の自動化、イベントの同時配信などメリットが複数あります。それぞれメリットの内容をみていきましょう。
サーバーレスアーキテクチャーの構成
「サーバーレスアーキテクチャー」は、常時稼働するサーバーや仮想マシンを極力使わずにシステムを構成することを指します。特定のイベントが発生した時にのみプログラムを起動するため、次のようなメリットがあります。
- クラウドサービス使用量の削減によるコスト最適化
- システムを常時稼働させるための運用負荷の削減
Event Gridはデータソースとアプリケーションを接続し、オンプレミスのサーバーやネットワーク機器に依存しないシステムを構成できます。
連携操作の自動化
Event Gridを使用すると、イベントをサービスに送信することでプログラムを実行できるため、必要に応じてサービス間の連携操作を自動化することができます。イベントで処理を連携させてしまえば、Aの処理が終わったらBの処理を手動で起動するなどの対応は必要ありません。
アプリケーションの処理を統合
Event Gridは既に利用しているアプリケーションの処理をAzureサービスに連携し、統合することができます。イベントはカスタマイズできるため、使用シーンに合わせたイベントを必要なサービスへ送信できます。
複数のエンドポイントに必要なだけイベントを同時配信
Event 必要に応じて複数のサービスやシステムへイベントを同時配信できます。また、フィルター処理を利用することで、送信先のサービスやシステムに必要なイベントのみを受信させられるのも便利です。
帯域を圧迫しないエラー処理
Event 処理の中でイベントの受信がエラーとなった場合は、10秒、30秒…1時間と徐々に間隔を広げながら送信がリトライされるため、大量のリトライによる帯域の圧迫などが発生しにくい設計になっています。24時間リトライを続けてもイベント受信が成功しない場合は、リトライが停止されます。
Event Gridの注意点
Event Gridはイベントを配信するという特性上、内容や順序を考慮しないことや、同じメッセージを複数配信してしまうなど注意すべき点もあります。それぞれ具体的に内容をみていきましょう。
メッセージの内容や順序を考慮しない
Event Gridで操作できるのは、あくまでもイベントです。イベントの内容や順序は考慮されず、また変化の通知が目的のためデータは含まれません。システム構築の際には、イベントの送信順序がバラバラでも運用できるように構築しましょう。
同じメッセージが複数配信されることもある
Event Gridはイベントの配信後、30秒経過しても送信先のサービスやシステムが応答していない場合は、イベントはリトライ待ちになります。
送信先のサービスやシステムが応答した場合、その時点でEvent Gridは対象のイベントを削除しますが、タイミングによってはイベントが再送信されてしまい、重複してサービスやシステムで受信される可能性があります。そのため、重複したイベントを受信しても動作が同じになるようにシステムを設計することが必須です。
Event Gridのユースケース
Event Gridは、イベントを送信することで、サービスの連携を自動化していきます。
例えばAzure Blob Storageなどに画像データが追加された際に、プログラムを呼び出して画像を分析するといった動作や、仮想マシンやデータベースが新しく作成された時にAzure Automationへイベントを送信し、サービス構成の準拠チェックを自動実行するなどの動作が可能です。Azure Blob Storageはテキストデータや画像データなどの一般的なファイル(非構造化データ)を大量に格納する仕組みを備えたストレージで、Azure Automationはプロセス自動化や構成管理などの機能を提供する運用管理サービスです。
またAzure Logic Appsをイベント送信先として、Event Gridによって送信されるイベントに対応するアプリを構築することもできるでしょう。Azure Logic Appsは、プログラミングをせずにGUI上でコネクタを組み合わせてアプリケーションを構築できるサービスです。公式のチュートリアルでは、仮想マシンの変更を監視し、変更に関する電子メールを送信するアプリケーションをEvent GridとAzure Logic Appsで構築していく様子が説明されています。
Event Gridの料金
Event Gridでは、イベントに関連する操作に対して課金される価格モデルとなっていて、その価格は2022年10月現在で100万操作ごとに約87円です。また毎月の最初の10万操作は無料になっています。
公式サイトでは「価格例1」として、Azure FunctionとBlob StorageがEvent Gridを介して接続されているシステムでの料金が示されていて、Blob Storageにおいて月間500万枚の画像が作成される場合に1,000万の操作がなされたと仮定すると、その料金は無料分10万操作を除いて9.9(990万操作)×87円=約861.3円です。
詳細については公式サイトをご覧ください。
Event Gridで業務プロセスの自動化を
Event Gridはイベントを送信することでさまざまなサービスを連携させる、裏方的なサービスです。何らかの形でEvent Gridを使用しているというサービスは多いでしょう。そのメリットも操作の自動化やアプリケーションの統合、複数イベントの同時配信など複数あります。
しかしながら、Event Gridはイベントを送信するだけの仕様のため注意点もあり、メッセージの順序・内容が考慮できないことや、複数メッセージが送信されてしまう可能性などに注意が必要です。
Event Gridで処理を連携させて自動化し、業務プロセスの効率を向上させていきましょう。