Dataflow を使用した Pub/Sub でのトピックのダイナミック デスティネーションのご紹介
Google Cloud Japan Team
※この投稿は米国時間 2023 年 9 月 16 日に、Google Cloud blog に投稿されたものの抄訳です。
Pub/Sub は、さまざまな業種におけるデータ ストリーミングの分析情報を強化するうえで重要な役割を果たしています。また、ストリーミング分析の導入が進むのに伴い、より複雑で細かいユースケースを持つ企業が増えています。Pub/Sub を使用する特定のユースケースの 1 つに、さまざまなチームやデータソースから複数のデータを取り込み、データの転送中に特定のメッセージ属性に基づいてそのデータを複数のトピックに分類するというのが挙げられます。このたび、このフローをサポートするために、Pub/Sub トピックのダイナミック デスティネーションと呼ばれる新機能が Dataflow で利用できるようになりました。
現在では、メッセージを 1 つのトピックにパブリッシュする場合、Beam から Pub/Sub シンクへのインスタンスを作成します。追加のトピックにパブリッシュする場合は、このパターンを繰り返すか、複数のパブリッシャーで 1 つのトピックにパブリッシュするようにできます。ただし、数十、数百ものトピックにパブリッシュを開始する場合、多数のパブリッシャー クライアントを使用する必要があり、扱いにくく費用も高くなります。ダイナミック デスティネーションなら、1 つのパブリッシャー クライアントを使用して、どのメッセージをどのトピックに送信するかを指定することができます。
ダイナミック デスティネーションを使用するには 2 つの方法があります。Pub/Sub メッセージの属性からデスティネーション(宛先)を抽出する関数を提供する方法と、トピックを PubsubMessage クラスに配置し、writeMessagesDynamic メソッドを使用して書き込む方法です。なお、ダイナミック デスティネーションを使用する前に、Pub/Sub トピックがすでに存在している必要がありますのでご注意ください。以下に、メッセージ内の国に基づいてトピックにメッセージを割り当てる 2 つの例を示します。
関数による抽出:
例: トピックの安全を確保
ダイナミック デスティネーションを使用すれば、パイプラインのさらに上流でデータ セキュリティの適用を開始することもできます。すべてのデータを 1 つのトピックに書き込む場合、最後のデータシンクに書き出すときにデータを常にフィルタリングできますが、これにより、ユーザーが本来はアクセスできないはずのデータにアクセスできてしまう可能性が出てきます。メッセージ属性に基づいてデータを区切ることができれば、各チームのデータを専用のトピックに限定して保持し、そのトピックへのエンドユーザーのアクセスを制御できます。たとえば、あるゲーム会社は、マーケティング、プレーヤー分析、IT の各チームからのデータを 1 つのパイプラインに取り込むことができています。各チームは、データに適切な属性値をタグ付けし、それによってデータが適切なトピックに割り当てられ、自身のチームだけに関連する情報を表示できます。この新機能により、セキュリティに関する懸念やバックチャージ機能への対処がはるかに容易になります。
ダイナミック デスティネーションの使用を開始するには、Apache Beam 2.50 リリース以降にアップグレードされていることをご確認のうえ、PubsubIO のダイナミック デスティネーションに関するこちらのドキュメントをご覧ください。
-Cloud カスタマー エンジニア、分析スペシャリスト Mike Nadal
-Google Cloud、グループ プロダクト マネージャー Sachin Agarwal



