![[セッションレポート] Cloud Run と Eventarc Advanced でイベントドリブンアプリを構築する BRK2-066 #GoogleCloudNext](https://images.ctfassets.net/ct0aopd36mqt/mfvnpH15PsVPOaNIwYZ33/4e17c25441441bdd9f44672815983fd3/eyechatch_googlecloudnext25.png)
[セッションレポート] Cloud Run と Eventarc Advanced でイベントドリブンアプリを構築する BRK2-066 #GoogleCloudNext
はじめに
2025/4/9-11 の 3日間の日程で Google Cloud Next '25 がラスベガスで開催されてました!
4/11(金) のセッション「Build event-driven apps with Cloud Run and Eventarc Advanced」 で 2024/10 にリリースされた Eventarc Advanced について、架空の会社の課題を引き合いにしたわかりやすい説明がありましたので、Eventarc Advanced の説明部分を抜粋してレポートします。
登壇者:Hamid Asaadi(Software Engineer, Google Cloud), James Ma(Product Manager, Google Cloud), Sara Ford(Senior Developer Relations Engineer, Google Cloud)
Cymbol(架空の会社) eコマースプラットフォームの課題を Eventarc Advanced でどのように解決するか?
Cymbol eコマースプラットフォームの課題
登場人物と背景
- Laura(App Developer):プラットフォームでの最近の購入に基づいてプロモーションメールを送りたい
- Greg(App Developer):購入および支払いシステムの保守と開発を担当
- Adam(Platform Admin):App Development チーム間でデータアクセス管理を担当
課題
- Laura はプロモーションのために購入完了イベントを取得したい。
- 既にあるトピック(PAYMENTS)で購入完了イベントを取得できるが、機密情報(PII)を含むため、PII を含まない新しいトピック(PAYMENTS_NoPII)が必要。
- Laura は Avro でイベントを取得したいが、トピックは JSON で提供されるため Laura 側で変換の対応が必要。
これらの課題は Eventarc Advanced によって解決することができます。
Eventarc Advanced
2024/10 に Eventarc は新しいエディションである Eventarc Advanced をプレビューでリリースしました。Eventarc Advanced はサービスやアプリケーション間でのメッセージの受信、フィルタ、変換、転送する機能を提供します。Eventarc はソースからターゲットへのイベントを非同期に転送できるサービスですが、Eventarc Standard というエディションは従来の機能を維持します。
Eventarc Advanced では、アプリケーション、サービス、エンドポイントを含む複数のソースからのイベントを Message Bus に転送し、複数の宛先にパブリッシュできます。転送する際はイベントメッセージのフィルタやデータ形式の変換が可能です。
複雑なイベント処理やメッセージングのニーズがある組織に最適なサービスで、今回の課題の解決にも適切な選択肢となります。
公式ドキュメントより
詳細は以下ドキュメントをご参照ください。
Eventarc Advanced は Message Bus を中心に据えており、すべてのイベントを一か所でパブリッシュ及びサブスクリプションできます。また、Google Cloud リソースからのトリガーだけでなく、アプリケーションから Eventarc API を介して CloudEvents 仕様のイベントを JSON、Avro、Protobuf の形式で直接パブリッシュできます。
アクセスポリシー(一部新機能)
Message Bus は CEL(Common Expression Language) を利用したパブリッシュやサブスクライブのポリシーを定義することができます。デモのケースでは、支払いシステムは no_PII イベントのみパブリッシュ可能、プロモーションシステムは no_PII イベントのみサブスクライブ可能にします。
メッセージバスは IAM(Identity & Access Management) と統合されたアクセスポリシーも提供します。これにより、メンバーやチーム全体のアクセスポリシーも定義できます。管理者は、どの IAM ユーザーがどのようなメッセージにアクセスしてパブリッシュまたはサブスクライブできるかを条件付きで細かく設定できます。
パイプラインによる転送制御
デモのケースでは、「Laura は Avro でイベントを取得したいが、トピックは JSON で提供されるため Laura 側で変換の対応が必要」という課題があります。Eventarc Advance では Enrollment という概念を使用して Message Bus からメッセージをフィルタリングして Pipeline に渡します。Pipeline では、メッセージを Json、Avro、Protobuf 形式に変換し HTTP リクエストを再構成することができます。
まとめ
イベントを一か所でパブリッシュ/サブスクライブしてアクセス制御を管理する Message Bus、Message Bus からメッセージを細かくフィルタリングするための Enrollment、そして配信するメッセージのフォーマットを制御するパイプラインです。
おわりに
本セッションで紹介された Eventarc Advancedは、イベント駆動型アーキテクチャの実装における多くの課題を解決してくれそうです。
なお IAM 統合のアクセスポリシーについてはまもなくリリースという話がありましたので、こちらは引き続き情報収集し、やってみたブログを投稿できればと考えています。