Event Domains により、正しいイベントを正しい場所に配信する

10月 31, 2018 に投稿済み

Program Manager, Event Grid

Event Grid のコミュニティが大きくなるにつれて、多くの人がどれほど複雑なことができるか、どのくらいの規模でできるかを探ってきました。私たちは、このプラットフォーム上に構築されたいくつかのシステム アーキテクチャを見て、とても驚かされました。

こうしたシナリオをもっと簡単にするため、これまでの数か月間、2 つの機能の構築に集中的に取り組んできましたが、その機能を今日発表できることをうれしく思います。高度なフィルターと、Event Domains です。これは、あなたのすべての顧客に対してイベントを発行するためのマネージド プラットフォームです。さらに、開発者の体験を向上させ、Event Grid を Azure Government リージョンで利用できるようにすることにも取り組んできました。

Event Domains

Event Domains により、Event Grid の独自のイベント ソースになり、さまざまなビジネス上の組織、顧客、アプリケーションに対するカスタム イベントのフローを管理できます。イベント ドメインとは、基本的には同じアプリケーションに関連付けられた多数の Event Grid トピックの管理ツールであり、数千のトピックを含むことが可能な上位レベルの成果物です。ドメインにより、Azure Active Directory を介して各トピックの認可と認証をきめ細かくコントロールできるので、どのテナントまたは顧客がどのトピックにサブスクライブできるかを簡単に判断できます。また、イベント ドメインはパーティション分割にも対応しているため、イベントを各トピックに個別にパブリッシュする必要はなく、すべてのイベントをドメインのエンドポイントにパブリッシュすれば、Event Grid は各イベントが確実に正しいトピックに送信されるようにします。

これは Event Grid 特有の機能であり、開発者とそのパートナーが開発者独自のイベントをエンド カスタマーに提供する新しいシナリオを可能にします。

Event Domains では、Blob Storage や IoT Hub などの Azure が提供する基盤となるアーキテクチャを活用して、イベントをパブリッシュして開発者がそれを使用できるようにします。このことは、単一のイベント ドメインを使って、すべてのエンド カスタマーにイベントをパブリッシュしたり、別個のサービスを使用している複雑な組織全体にイベントをパブリッシュしたりできることを意味しています。

Event Domains をもっと簡単に説明するため、一つの例を考えましょう。Contoso Construction Machinery という企業を経営しているとします。この会社はトラクター、掘削機器、その他の重機を製造しています。経営の一部として、機器のメンテナンス、システムの正常性、契約の更新などについて顧客にリアルタイムの情報をプッシュで提供します。このような情報はすべて、アプリ、顧客のエンドポイント、顧客が設定したその他のインフラストラクチャを含むさまざまなエンドポイントに到達します。

Event Domains により、Contoso Construction Machinery を単一のイベント処理エンティティとしてモデル化することができます。それぞれの顧客はドメイン内でトピックとして表され、Azure Active Directory を使用して認可と認証を処理するため、開発者はそれらを気にする必要はありません。各顧客は自分のトピックにサブスクライブして自分たちに配信されるイベントを取得できますが、他のテナントのトピックへのアクセスは AAD とイベント ドメインによりブロックされます。

また、すべての顧客のイベントをパブリッシュできる単一のエンドポイントが提供され、Event Grid は、各トピックがそのテナントに対してスコープが指定されているイベントだけを認識するようにします。

Contoso Construction Machinery のイベント ドメイン グリッド

最近の傾向として、アプリケーションのアーキテクチャが次第にイベントベースのプログラミング モデルへと移行してきているため、HTTP エンドポイント、アプリケーション、クラウド サービスへのプッシュのサポートがますます重要になっています。Event Domains はイベント処理を担うので、開発者が気にかける必要があるのは、顧客にどのイベントを利用できるようにするかということだけです。

Event Domains を使用して次のことができます。

  • 大規模なマルチテナントのイベント処理アーキテクチャを管理する。
  • 認可と認証を管理する。
  • 各トピックを個別に管理するのではなく、トピックをパーティションに分割する。
  • 各トピック エンドポイントへの個別のパブリッシュを回避する。

Event Domains の詳細についてはドキュメントを参照し、このサンプルを使って試してみてください。

Event Grid の高度なフィルター

追加された Event Domains の機能を補うものとして、Event Grid では今日からいくつかの新しい種類の高度なフィルターがサポートされるようになったことをお知らせします。この新しいフィルターにより、数値、文字列、ブール値のフィルターを含む多くの新しい種類のフィルター処理を接続中に利用できます。

このアップデートにより、各データ型に対して多くの演算子が提供され、それらを実行できるフィールドの数が大幅に増え、どのイベントをどこにルーティングするかについての制御が強化され、必要なイベントだけがそれを処理する Compute Services に渡されるようになります。高度なフィルターは、エンベロープ プロパティ (DataVersion、Id、Topic など) と、最初のレイヤーのデータ ペイロード (data.key1 など) をサポートします。データ型ごとに、次の演算子が追加されます。

数値

  • NumberLessThan
  • NumberLessThanOrEquals
  • NumberGreaterThan
  • NumberGreaterThanOrEquals
  • NumberIn - data.key の値が、集合 [0, 2.08, 3.14] に含まれる値に等しい
  • NumberNotIn - data.key の値が、集合 [1, 11, 112, 1124] に存在しない

文字列

  • StringContains - data.key の値が “the” を含む
  • StringIn - data.key の値が、集合 [“small”, “brown”, “fox”] に含まれる値に等しい
  • StringNotIn - data.key の値が、集合 [“jumped”, “over”, “the”] に存在しない
  • StringBeginsWith - data.key の値が、“lazy” で始まる
  • StringEndsWith - data.key の値が、“dog” で終わる

Boolean

  • BoolEquals

ビジネス ロジックを実行する前に、イベントをさらにフィルター処理するための面倒なスクリプトを追加する必要はもうありません。さまざまな新しいフィルターを活用すれば、フィルターの強力な組み合わせが可能になり、イベント ハンドラーは本当に必要なデータだけを扱えるようになります。

Event Grid の高度なフィルター処理機能の詳細については、ドキュメントを参照してください。

利用可能な Azure Government のリージョン

2018 年 11 月 1 日以後、Event Grid は US Gov アリゾナ、テキサス、バージニアのリージョンで利用できます。Event Grid のすべての機能 (カスタム トピック、ドメイン、フィルター処理、配信不能) を最初から使用できます。ただし、Azure Storage のようなファースト パーティ Azure サービスの組み込みイベントは、すぐには使用できるようになりません。これらの組み込みイベント ソースはこれらのリージョンに対して現在準備中で、数か月以内に徐々に追加されていきます。続報をお待ちください。つまり、サービスに残りの機能を追加し終えるまで、US Gov リージョンでは Event Grid はパブリック プレビュー状態だということです。特定のイベント パブリッシャーに関して質問や要望がある場合は、チームまでご連絡ください。

開発環境の改善

最後に、私たちはテストや開発をもっと簡単にするため、小さな調整や更新に継続的に取り組んでいます。この考えのもと、いくつかの SDK を更新し、イベント サブスクリプションに Time to Live (有効期限) の機能を追加し、配信不能と再試行ポリシーの構成のためのポータル UI サポートを追加しました。

Azure portal での配信不能と再試行のポリシー

イベント サブスクリプションを作成するときには、いつでもページ上部にある [追加機能] タブをクリックできます。このページから、再試行ポリシーと配信不能の構成、フィルター、追加されるその他の新しい機能にアクセスできます。さらに詳細エディター モードも追加され、そこでは ARM テンプレートで使用するためのサブスクリプションの ARM 表記を確認したり、ポータルでまだ利用できるようになっていない新しい機能を構成したりすることができます。

イベント サブスクリプションの Time to Live (TTL)

一時的なリソースは、いくつかの理由で役に立ちます。古いリソースを除去することでテスト時にきれいな環境を保つことができ、リソースを無期限にパブリッシュしないことでセキュリティを確保でき、イベントに積極的にサブスクライブしているリソースだけに構成を適用することによって構成を最新のものに保つことができます。イベント サブスクリプション TTL により、イベント サブスクリプションの作成時に有効期限を構成でき、その後イベント サブスクリプションは自動的に削除されます。

SDK の更新

.NET、Java、Go の SDK が更新され、Azure のネイティブ イベントの使用がさらに簡単になりました。それぞれの最新リリースの SDK は、Azure がパブリッシュするすべての利用可能なイベントの種類に対応しています。このことは、Event Grid の eventGridSubscriber を使用すれば、最初に JSON を手動で逆シリアル化してさまざまなイベントの種類のクラスを作成しなくても、すべての既知のイベントの種類に対して直接イベントを逆シリアル化して、イベントのコンテンツのためのコードを書き始めることができることを意味しています。さまざまな SDK で Event Grid のリソースとイベントを簡単に管理する方法についてご確認ください。