Eventarc でイベント ドリブン アーキテクチャを作成する

Eventarc と Firestore を使用して、イベント ドリブン アーキテクチャを構築できます。Eventarc の Firestore トリガーは、データベース内の特定のドキュメントの変更からイベントを生成します。トリガーは、サポートされている宛先にイベントをルーティングできます。

Eventarc は、分離されたマイクロサービス間の状態変更(イベント)を管理する標準化されたソリューションを提供します。トリガーされると、Eventarc は配信、セキュリティ、承認、オブザーバビリティ、エラー処理を管理し、これらのイベントをさまざまな宛先に転送します。

制限事項

Eventarc の Firestore トリガーには、次の制限事項があります。

  • 順序は保証されません。短時間に複数の変更を行うと、予期しない順序でイベントがトリガーされることがあります。
  • イベントは、少なくとも 1 回配信されます。

    イベント ハンドラがべき等であることを確認し、イベントが複数回配信されるときに予期しない結果や副作用が発生しないようにします。詳細については、べき等関数の構築をご覧ください。

  • トリガーは、単一のデータベースに関連付けられます。複数のデータベースに一致するトリガーを作成することはできません。

  • データベースを削除しても、そのデータベースのトリガーは自動的に削除されません。トリガーはイベントの配信を停止しますが、トリガーを削除するまで存在し続けます。

Eventarc と Firestore のロケーション

Eventarc は、Firestore イベント トリガーのマルチリージョンをサポートしていませんが、マルチリージョン ロケーションの Firestore データベースのトリガーは作成できます。Eventarc は、Firestore マルチリージョン ロケーションを次の Eventarc リージョンにマッピングします。

Firestore マルチリージョン Eventarc リージョン
nam5 us-central1
eur3 europe-west4

Cloud Functions の第 2 世代と第 1 世代の違い

Cloud Functions(第 2 世代)では、すべてのランタイムに Eventarc イベントを使用します。以前は、Cloud Functions(第 1 世代)では、一部のランタイムのみに Eventarc イベントが使用されていました。Eventarc イベントでは、Cloud Functions(第 1 世代)と次の点が異なります。

  • Eventarc 用の Firestore トリガーは、Cloud Functions 以外の追加の宛先をサポートしています。CloudEvents は、Cloud Run、GKE、Workflows など、さまざまな宛先に転送できます。

  • Eventarc の Firestore トリガーは、データベース書き込みオペレーションの開始時にトリガー定義を取得し、その定義を使用して Firestore がイベントを出力するかどうかを判断します。書き込みオペレーションでは、実行中に発生する可能性のあるトリガー定義への変更は考慮されません。

    Cloud Functions(第 1 世代)は、データベース書き込みの評価中にトリガー定義を取得し、評価中のトリガーの変更は、Firestore がイベントを出力するかどうかに影響します。

Datastore モードとネイティブ モードのイベント相互運用性

Eventarc は、Datastore モードとネイティブ モードの両方のイベント トリガーをサポートしています。これらのイベント トリガーは、両方のデータベース タイプで相互運用できます。 ネイティブ モードの Firestore データベースは Datastore のイベントを受信し、Datastore モードの Firestore データベースはネイティブ モード イベントを受信できます。

イベントの相互運用性により、さまざまなタイプの Firestore データベース間で Eventarc コードを共有できます。

イベント コンバージョン

ネイティブ モードのイベント トリガーを Datastore モードのデータベースに適用すると、Eventarc は次のコンバージョンを行います。

  • エンティティの名前空間がイベントの PartitionId 属性に格納されます。
  • 埋め込みエンティティはネイティブ モードの map 型に変換されます。

次のステップ