BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース MicrosoftがAzure Event Gridを提供開始、イベント処理を統合化

MicrosoftがAzure Event Gridを提供開始、イベント処理を統合化

原文(投稿日:2017/08/16)へのリンク

Microsoftは本日、クラウドイベントの収集と処理を行なう新サービスをリリースした。Azure Event Gridというこのサービスは、Azureサービスあるいはカスタムアプリの生成するイベントを取得して、選択されたハンドラにルーティングする。サーバレスアプリやアプリ統合、運用自動化のための単一のイベントストリームを、開発者および運用担当者に提供するサービスである。
 
同社Corey Sanders氏はこのサービスについて、“イベントをAzureのファーストクラス・オブジェクトにする”ための“完全にマネージドなイベントルーティングサービス”である、と説明している。Azureのサービスが送信するイベントは、さまざまな種類のイベントハンドラのいずれかにルーティングされる。これらハンドラ – Azure Functionからwebhooksまで – は、イベントフィルタリングと信頼性の高い配信機能をサポートする。Azure Event Gridは毎秒数百万までスケール可能であるとMicrosoftは主張している。 1ヶ月あたり100,000件までのオペレーションは無償で、それ以降は100万件毎に0.60ドルが課金される。
 
Microsoftを含むすべての主要クラウドプロバイダは、アプリケーションからアプリケーションへのルーティングやイベント処理など、一連のメッセージングサービスを提供している。しかしながら、今回の機能は少なからずユニークだ。Microsoftは、マネージドおよびカスタムトピック用に単一のイベントファブリックを提供しており、すべての主要なクラウドサービスを対象としたパブリッシャサポートを組込みで提供すると約束している。標準提供されるハンドラでも、アクションをAzure内で起動するか、あるいはwebhook経由で外部から起動するかを、ユーザが選択することができる。参考までに、Google Cloud Pub/Subにもイベントを送信するGoogle Cloud Storageのようなサービスが存在するが、これはサービスの一部分である上に、メッセージトピックについては別に管理しなくてはならない。AWS Cloudでは、一部のサービスからのイベントを取得するSQSと、限られたタイプのハンドラにイベントをパブリッシュするCloudWatchがあるのみだ。
 
Azure Event Gridについてもっと詳しく知るため、InfoQは、新サービスのプロダクトオーナを務めたプリンシパルプログラムマネージャリーダのDan Rosanova氏に話を聞いた。
 
InfoQ: Azure Event Gridの基になったのは何でしょう?Service Fubricのように、社内で使用していた製品を一般公開したのでしょうか、あるいは、最初からユーザ向け製品として作られたものでしょうか?
Rosanova: Azure Event Gridは最初からユーザ向けでしたが、それだけではなく、AzureやMicrosoft全体の社内ニーズにも応えるようにデザインされています。これはつまり、Azureと当社ユーザに共通するシナリオを念頭に開発されたということです。規模、信頼性、相互運用性、そしてコストが、私たちの検討すべき重要なテーマでした。
 
InfoQ: 現時点でEvent Gridにイベントを公開しているAzureサービスには何がありますか?どのリージョンですか?今後予定されているのは何ですか?
Rosanova: 現時点で利用可能なリージョンは、West US 2とWest Central USです。Azure Resource Manager、Event Hubs Capture、Storage Blobサービスがパブリッシャをローンチしています。Azureの全リージョンにこのサービスのデプロイを続けるとともに、最終的にはすべてのAzureサービスを対象にする予定です。
 
InfoQ: 開発者が自身のアプリケーションから、Azure Event Gridにイベントを発行することはできますか?Azure外部のアプリからも可能でしょうか?それにはどうすればよいのでしょう?
Rosanova: Azure Event Gridでは、すべてのイベントがトピックから生成されます。トピックには、ストレージアカウントのようなAzure固有のものもあります。ストレージアカウントを使用するとイベントが発生するのです。カスタムトピックを独自に作成することも可能です。これによって自分自身のイベントをトピックに公開することが可能になり、あなたや他の人たちがそのトピックを購読すれば、関心のあるイベントを受信することができます。イベントの公開はHTTP POST経由で、ヘッダ内のキーあるいはトークンを認証に使用して行います。Event Gridへの送信に私がよく使うのは、curlとbash変数を利用する方法です: curl -X POST -H "aeg-sas-key: $key" -d "$body" $topicEndpoint
 
InfoQ: Azure Event Gridを開発者が操作するには、どうすればよいのでしょう?UXには何を使用していますか?
Rosanova: Azure Event GridはAzureのExtension Resourceです。つまり、ストーレジなど他のリソースに紐付けられているのです。あるストレージアカウントにイベントサブスクリプションを作成する場合、実際にそのストレージアカウントのUXに移動します。イベントはこのように、現在Azureですでに使用されているリソースを自然に拡張したものなのです。Azure Event Grid独自のUXを介して操作することも可能ですが、できる限りイベントパブリッシャのUXを使用してほしいと思っています。カスタムトピックの場合、アンカーはカスタムトピック自体なので、トピックに移動して、そのイベントを購読すればよいのです。当社が内部的に使用しているものと同じモデルと技術が使用されて、ユーザに直接提供されます。
 
InfoQ: “イベント”はどのような形式ですか?ヘッダやペイロードに必須部分とオプション部分はありますか?
Rosanova:
aeg-sas-key: <Key From My Azure Event Grid custom topic>
[
 
    "id": "'"$RANDOM"'",
    "eventType": "recordInserted",
    "subject": "myapp/vehicles/motorcycles",
    "eventTime": "'`date --iso-8601=seconds`'",
    "data":{
        "make": "Ducati",
        "model": "Monster"
    }
  }
]
 
上の例では、ヘッダのaeg-sas-keyを指定するか、あるいはヘッダのSASトークンがaeg-sas-tokenとして使用されます。ボディ部に目を移すと、id、event type、subject、event time(ISO 8601形式)、その他データオブジェクト内の有効なJSONすべてが必須です。イベントタイプやサブジェクトを事前に登録しなくても、イベント購読者用のフィルタとして使用することができます。イベントのモデリングでは、これらのことを考慮しておく必要があります。
 
InfoQ: 信頼性の高いメッセージシナリオには適切でしょうか?
Rosanova: Event Gridは少なくとも1回のイベント配信を保証します。エンドポイントがリクエストを200/202しない限り、指数関数バックオフで再送を行います。この再送インターバルが最終的に1時間になり、24時間後に配信されなかったイベントがドロップされます。少なくとも1回というのはつまり、信頼性はありますが、特に受信応答を行なわない場合には、同じイベントを複数回受信する可能性があるということです。
 
InfoQ: イベントの正当なコンシューマは誰でしょう?カスタムアプリ、Webhooks、あるいはAzureサービスでしょうか?
Rosanova: それらすべてです。イベントの行き先による区別は行なっていませんし、リージョンやクラウドも限定していません。コンシューマはAzure Event Gridの直接UX統合されたLogic AppsやFunctionなどのAzureサービスでも構いませんが、Azure内やその他の場所にあるHTTPエンドポイントでも可能です。
 
InfoQ: MicrosoftはAzure Service Bus, Azure Event Hubs, Logic Appsなど、メッセージング関連のサービスをいくつか提供しているのですが、明確にAzure Event Gridのユースケースである、と言えるものは何ですか?
Rosanova: Azure Event Gridは、Azureだけでなく、すべてのクラウドプロバイダを対象とするという意味において、現行のメッセージングサービスのギャップを埋めるものです。当社にはメッセージングやキューイング、テレメトリのサービスがありますが、特にクロスサービスやクロスクラウドなシナリオに対応できる、包括的なイベントのサービスがありません。一般的な電子商取引アプリケーションを検討しているのであれば、セールストランザクションやその他の物的ないし金融的な取引のためにService Busのようなものが、“在庫引き当て”など各部分の状態をレポートするためにEvent Gridのようなサービスが、さまざまなコンポーネントすべてにわたってテレメトリを追跡するためにEvent Hub的なものが、それぞれ必要になるはずです。Azure Event Gridにとって重要と思われる3つの領域として、サーバレス、運用、統合が挙げられます。それぞれが独自の理由によって、領域の多少異なるユーザを対象としているのです。

この記事を評価

採用ステージ
スタイル

この記事に星をつける

おすすめ度
スタイル

BT