Eventarc を使用したイベント ドリブン アーキテクチャの概要

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

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

サンプル ユースケース

イベント ドリブン アーキテクチャは、サービスがイベントと呼ばれる状態変化に対応するシステム設計パターンです。このパターンを Firestore のスケーラビリティとともに使用して、アプリに機能を追加できます。たとえば、次の機能を追加できます。

  • 異なる技術スタック間の相互運用

    データを複製して変換してから、分析システムに送信します。

  • 並列処理

    並列処理のためにオペレーションをファンアウトします。エンティティの変更に基づいて動作するシステムが複数ある場合は、各コンシューマーで push ベースのストリームを使用してイベントを複数のコンシューマーにルーティングできます。

  • push ベースのイベント ストリーム

    push ベースのメッセージング設計を構築します。クライアントはリモート サービスをポーリングすることなく通知を受け取ることができます。ポーリング レイテンシがなければ、その場でのデータ処理やリアルタイム分析がより適切に行えます。

  • 状態のモニタリングとアラート

    イベント ドリブン アーキテクチャを使用して、カスタム指標をデータベース オペレーションに追加します。変更や更新の際にモニタリングし、アラートを受信します。異常を検出します。

制限事項

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

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

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

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

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

Datastore モードの Eventarc と Firestore のロケーション

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

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

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

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

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

イベント コンバージョン

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

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

次のステップ