Eventarc のイベント ドリブン アーキテクチャの概要

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

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

サンプル ユースケース

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

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

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

  • 並列処理

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

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

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

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

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

制限事項

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

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

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

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

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

Eventarc と Datastore モードの 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 型に変換されます。

次のステップ