Amazon EventBridgeにSchema Registry & Schema Discoveryが追加されました! #reinvent

2019.12.02

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Amazon EventBridge Schema Registry & Schema Discovery

みなさんこんにちは!re:Invent 2019、始まりましたね!今年も数多くの最新情報を迅速にお届けできればと思います。

さて、本日Amazon EventBridgeにアップデートがあり Schema RegistrySchema Discovery という機能が追加されました。こちらは現在プレビューとして提供されています。

本記事では、Schema Registryとは何ぞや?というのを解説したいと思います。

改めて「EventBridge」とは

EventBridge自体が比較的新しいサービスですので、まずは改めて前提知識をざっくり学びましょう。

Amazon EventBridge は、独自のアプリケーション、SaaS (Software-as-a-Service) アプリケーション、AWS のサービスからのデータを使用してアプリケーションどうしを簡単に接続することを可能にするサーバーレスイベントバスです。EventBridge は、Zendesk、Datadog、Pagerduty などのイベントソースからリアルタイムデータのストリームを配信し、そのデータを AWS Lambda などのターゲットにルーティングします。お客様は、データの送信先を判断するためのルーティングルールを設定して、すべてのデータソースにリアルタイムで反応するアプリケーションアーキテクチャを構築できます。EventBridge では、イベントの取り込みと配信、セキュリティ、承認、エラー処理が自動的に行われるため、イベントドリブンアーキテクチャを簡単に構築することができます。

AWS公式ページ より引用

シンプルな名前を付けるとするならば マネージドイベントバスサービス です。あるサービスにおけるあるイベントを契機としたLambda処理などを丸っと構成することができます。

EventBridgeが登場するまではどうしてもピタゴラスイッチ的になりがちだったサーバーレスアーキテクチャ(あるいはイベント駆動型のアーキテクチャ)をよりマネージドにすることができるというわけです。

イベントソースには、AWSの各サービス、SaaSアプリ、独自アプリなどを用いることができ、Ruleによってイベントのフィルタリングをした上でAWS Lambda、Amazon Kinesis Data Firehose、Amazon SNS、またはそれ以外のターゲットに流すことができます。

AWS公式ページ より引用

Schema RegistryとSchema Discoveryとは?

Schema RegistryとSchema Discoveryは EventBridgeで扱うイベントデータのスキーマ情報(あるいは型情報)を公開・共有するサービス です。

EventBridgeを使う上で、これまではスキーマを意識しながら記述する作業は手作業で行う必要がありました。Schema RegistryとSchema Discoveryによって、あるイベントにおけるスキーマ情報をすでに用意されているものから設定することができます。イベントにとって、イベントデータのスキーマ情報に信頼が持てると繋ぎこみがより構築しやすくなります。

AWS公式ブログ より引用

Eventソースの提供者がSchema Registryにスキーマを登録し、利用者はEventソースを使う際にSchema Discoveryでスキーマを探して設定する。そうすることで、ターゲット(Lambdaなど)を記述する際にイベントデータのスキーマ情報有りでコーディングできるようになるというわけです。

Schema Registryには自動で登録

Schema Registryには、Schema Discoveryの機能を使って登録ができます。Schema Discoveryが有効化されると、 Schema Discoveryは対象のEventBridgeのEvent Busに送信されるイベントのスキーマが自動的にSchema Registryに登録されます。これは非常に画期的ですね。イベントソース側は、いちいちスキーマをEventBridgeのために自己管理しなくて良いわけです。

またイベントのデータ構造が変更されたら、スキーマは自動的にアップデートされます。

コードバインディング

Schema Discoveryを使って探し出したスキーマが使えますが、AWS Toolkit pluginを使うことでコードをダウンロードしてきたり、コーディングの際に自動補間できるようになります。AWS Toolkit pluginはIntelliJまたはVS Code向けに公開されています。

プレビュー段階では、以下のプログラミング言語をサポートしています。

  • Java
  • Python
  • TypeScript

料金

Schema Registryは無料でお使いいただけますが、Schema Discoveryは以下の料金体系になります。

  • Discoveryを利用する際、100万イベントごとに$0.10

無料枠があり、1ヶ月につき500万イベントまでは無料となっています。イベント数が極端に多くない場合は利用料がほぼ発生しなそうですね。

まとめ

EventBridgeに限らずですが、イベント駆動アーキテクチャを構築する上でスキーマ情報が無い場合、イベントを受ける側がどうしてもイベント発行側を信頼しきれないケース(たまに誤ったデータが送られてきたりする)が多かったんじゃ無いでしょうか。連携上の予期せぬ不具合が起きたり、あるいは不具合が起きないように冗長なテストを書かなければいけないなど、作業コストがかかりがちです。

Schema Registry & Schema Discoveryを使うと、イベントから自動的にスキーマを登録(あるいはアップデート)し、それを使って連携処理をコーディングできるようになります。イベントを発行する側も受ける側も、効率的に開発できるようになります。 開発工数の削減が期待できますね。

また最近はCDKなど、TypeScriptのサポートが手厚いので、JavaScript使いの開発者にとって嬉しいですね。

現在はプレビューとして提供されていますが、一般公開が待ち遠しいですね。