Eventarc を使用すると、基盤となるインフラストラクチャを実装、カスタマイズ、またはメンテナンスすることなく、イベント ドリブンとメッセージ ベースのアーキテクチャを構築できます。
Eventarc には、Eventarc Advanced と Eventarc Standard の 2 つのエディションがあります。どちらのエディションも、ソースからターゲットへのイベントを非同期に転送できる、スケーラブルでサーバーレスのフルマネージド イベント ソリューションを提供します。詳細については、Eventarc Advanced と Eventarc Standard の選択をご覧ください。
Eventarc Advanced は、アプリケーション、サービス、エンドポイント間でメッセージを通じてイベントデータの取り込み、オーケストレーション、配信を簡素化するように設計されています。Eventarc Advanced を使用すると、システムで発生したイベントを収集し、中央のバスに公開できます。関心のあるサービスは、登録を作成することで特定のメッセージにサブスクライブできます。バスとパイプラインを使用すると、複数のソースからのイベントをリアルタイムで転送し、複数の宛先にパブリッシュできます。また、必要に応じて、ターゲットに配信する前にイベントを変換することもできます。
Eventarc Advanced は、複雑なイベント処理やメッセージングのニーズがある組織に最適です。特に、多数の Pub/Sub トピックや Kafka キュー、あるいはサードパーティのメッセージング システムの管理に取り組んでいる組織に最適です。Eventarc Advanced は、管理者に強化された一元的な可視性と制御を提供することで、組織が異なるプロジェクトの複数のチームを接続できるようにします。
Eventarc Advanced は、Google Cloud コンソール、Google Cloud CLI を使用したコマンドライン、または Eventarc API を使用して管理できます。
主なコンセプト
バスは、イベントの検出可能なエンドポイントを提供します。これは、プロバイダによって公開されたすべてのイベントを受信し、0 個以上の宛先に配信するルーターです。バスを使用すると、システム内のメッセージのフローを集中的にモニタリングして追跡できます。バスを使用すると、多くのソースから多くのターゲットにイベントを転送できます。
バスに到着したメッセージは、特定のバスによって収集されたイベントのサブスクリプションを表す登録の基準に従って評価されます。イベントは、それらの特定のイベントに登録したコンシューマに転送されます。この登録では、Common Expression Language(CEL)を使用して、イベント属性に基づいてイベントを照合し、きめ細かいアクセス制御ポリシーを定義できます。登録では、一致したイベントを配信するパイプラインを指定することもできます。
パイプラインは、バスと宛先の間の配信仲介です。パイプラインはターゲット デスティネーションを指定します。また、一致したイベントを配信する前に変換するオプションも提供されます。複数のペイロード形式をサポートし、ソースまたはターゲット サービスを変更せずにイベントデータをその場で適応させることで、さまざまなイベント構造を処理できます。
主な機能
Eventarc Advanced は、宛先アプリケーションの多くのユースケースをサポートしています。主な機能は次のとおりです。
大規模なアプリケーション統合: 多数のサービスとアプリケーションを接続し、さまざまなイベント形式とスキーマ間で非同期通信を可能にします。
AI と分析のためのイベント ストリーミング: IoT デバイスと AI ワークロードからの大量のデータの流入を処理し、イベントをフィルタリング、変換、拡充してから分析パイプラインにフィードできます。
ハイブリッド クラウドとマルチクラウドのデプロイ: イベントドリブン アーキテクチャを Google Cloud の外部に拡張し、オンプレミス システムや他のクラウド プロバイダと統合できます。Eventarc Advanced を使用すると、Google ソースやイベントの直接パブリッシャーなど、さまざまなソースからイベントを転送できます。
地域性を理解する
Eventarc Advanced は完全にリージョン サービスです。すべての Eventarc Advanced トラフィックとデータは同じリージョンに存在する必要があります。たとえば、登録とパイプラインは、バスと同じリージョンのデータのみを読み取り、処理できます。リージョン間のサポートは、異なるリージョンの異なるバスにイベントをパブリッシュし、複数のリージョンにまたがるサービス境界内のネットワークを構成することで実現できます。
プロジェクトのレイアウト
すべての Eventarc リソースは Google Cloud プロジェクトに属している必要があります。ただし、プロバイダ(イベントソース)、バス(管理者)、パイプライン(イベント ターゲット)が同じプロジェクトにある必要はありません。
Identity and Access Management(IAM)権限を組み合わせて、リソースの使用状況、CEL を使用したデータへのきめ細かいアクセス、ネットワーク アタッチメント、サービス境界を制御し、さまざまな上り(内向き)と下り(外向き)のニーズに合わせてネットワークとセキュリティの要件をサポートできます。
イベント
イベントとは、オカレンスとそのコンテキストを表すデータレコードであり、リソースまたは環境の変更を示します。イベントは、他のイベントから独立した個別の送受信の単位です。たとえば、データベース内のデータの変更、ストレージ システムへのファイルの追加、スケジュールされたジョブなどがイベントに該当します。
イベントは、状態が変更されたときにコンポーネントから出力されるメッセージでもあります。イベントが発生すると、メッセージはイベント インフラストラクチャに送信され、コンシューマが取得できます。イベント ドリブン アーキテクチャのコンテキストでは、イベントという用語は、発生自体(実際に発生してメッセージを生成した事象)ではなく、イベントを通知するメッセージを指すために使用されます。
イベントタイプ
Eventarc Advanced は、Google ソースから直接受信するイベントをサポートしています。
詳細については、Eventarc でサポートされている Google イベントタイプをご覧ください。
イベント プロバイダと宛先
イベントは Eventarc Advanced によってイベント プロバイダから収集され、イベントの宛先に転送されます。各 Eventarc Advanced パイプラインで、ルーティングされたメッセージのターゲットとして指定できる宛先は 1 つだけです。
サポートされているプロバイダには、Google プロバイダとイベントの直接パブリッシャーが含まれます。サポートされている宛先には、Cloud Run、Cloud Run 関数、Virtual Private Cloud ネットワークでホストされている HTTP エンドポイント、ワークフロー、別の Eventarc Advanced バスなどがあります。
詳細については、イベント プロバイダと宛先をご覧ください。
イベントの形式とライブラリ
Eventarc は、プロバイダに関係なく、バイナリ コンテンツ モードで HTTP リクエストを使用して、ターゲットの宛先に CloudEvents 形式でイベントを配信します。CloudEvents は、イベント メタデータを一般的な方法で記述するための仕様です。
Cloud Run functions や Cloud Run などの宛先は、HTTP 形式のイベントを使用します。Workflows の宛先の場合、Workflows サービスがイベントを JSON オブジェクトに変換し、ランタイム引数としてワークフロー実行に渡します。
標準的な方法でイベント メタデータを記述すると、整合性、ユーザー補助、ポータビリティが維持されます。イベント コンシューマはこれらのイベントを直接読み取ることも、さまざまな言語(C++、C#、Go、Java、Node.js、PHP、Python、Ruby など)の Cloud クライアント ライブラリを使用してイベントを読み取り、解析することもできます。言語固有の CloudEvents SDK もあります。
すべてのイベントの HTTP 本文の構造は、Google CloudEvents GitHub リポジトリで入手できます。
信頼性と配信
配信で先着順や先入れ先出しの保証はありません。厳密な順序付けを行うと、Eventarc のトランスポート層である Pub/Sub の可用性とスケーラビリティの機能が低下するので注意してください。詳細については、メッセージの順序指定をご覧ください。
レイテンシとスループットはベスト エフォートです。これらは、パブリッシュ トラフィックまたは下り(外向き)トラフィックに異なるリージョンが関係するかどうか、特定のサービスの構成、Google Cloud リージョン内のリソースのネットワーク負荷など、複数の要因によって変わります。
Eventarc には使用量の割り当てと上限があります。
イベントの再試行ポリシー
Eventarc Advanced によって設定されたデフォルトのメッセージ保持期間は 24 時間です(指数バックオフ遅延があります)。
Eventarc Advanced は、再試行可能なエラーを処理するために指数バックオフ遅延を使用します。最初は 1 秒の遅延から始まり、失敗した試行ごとに遅延が 2 倍になります(最大 60 秒、5 回)。
詳細については、イベントの再試行をご覧ください。
重複するイベント
重複するイベントがイベント ハンドラに配信される場合があります。CloudEvents 仕様により、source
属性と id
属性の組み合わせは一意と見なされるため、同じ組み合わせを持つイベントは重複と見なされます。一般的なベスト プラクティスとして、べき等イベント ハンドラを実装する必要があります。
オブザーバビリティ
Eventarc、Cloud Run、Cloud Run functions、Pub/Sub、Workflows の詳細ログは、Cloud Audit Logs から取得できます。