🛠

Analytics Hub による Pub/Sub Topic の共有

2024/08/20に公開

はじめに

こんにちは、クラウドエース データソリューション部に所属するデンです。

クラウドエース データソリューション部 について

クラウドエースの IT エンジニアリングを担う システム開発統括部 の中で、特にデータ基盤構築・分析基盤構築からデータ分析までを含む一貫したデータ課題の解決を専門とするのが データソリューション部 です。

弊社では、新たに仲間に加わってくださる方を募集しています。もし、ご興味があれば エントリー をお待ちしております!

データソリューション部では、Google Cloud が提供しているデータ領域のプロダクトについて、新規リリースをキャッチアップするための調査報告会を毎週実施しています。
新規リリースの中でも、特に重要と考えるリリースを記事としてまとめ、本ページのように公開しています。

今回ご紹介するリリースは、2024 年 07 月 01 日にプレビューとなった、Analytics Hub を介して Pub/Sub Topic を共有する機能です。この機能を利用して、組織内外の複数の境界を越えて Pub/Sub Topic を共有することが可能となります。

前提知識の紹介

Analytics Hub とは

今回のリリースの前は、Analytics Hub は BigQuery のデータ共有のみをサポートしていました。もともと、Analytics Hub は BigQuery を基盤としたデータ共有のプラットフォームです。そこでまず前提知識として、Analytics Hub の機能について簡単に説明します。

Analytics Hub は、BigQuery を基盤とした組織内外の境界を超えるデータの共有を可能にするプラットフォームです。その中で、データを提供する側は Publisher と呼び、データを利用する側は Subscriber と呼びます。データを共有する際、データの実体は Publisher 側だけに保存されます。Subscriber 側は、Publisher が共有したデータを参照することができます。そのため、データの複製なしの共有を実現でき、追加のデータ保存のコストはかかりません(Analytics Hub 自体は無料で、BigQuery や Pub/Sub の使用料金だけかかります)。


図:https://cloud.google.com/blog/ja/products/data-analytics/analytics-hub-data-exchange-is-now-generally-available
より引用

Pub/Sub とは

では、続いて、今回のリリースにより、Analytics Hub にサポートされるようになった Pub/Sub の機能について簡単に説明します。

Pub/Sub とは、信頼性とスケーラビリティに優れた非同期メッセージング サービスです。Pub/Sub を使用すると、100 ミリ秒程度のレイテンシで非同期に通信できます。このレイテンシは非常に低いため、リアルタイムのイベント配信によく使われています。

Pub/Sub の構造は以下の図例のようになっています。


図:https://cloud.google.com/pubsub/docs/pubsub-basics?hl=ja#lifecycle_of_a_message_in
より引用

この図例に示されるように、Pub/Sub には、Publisher と Subscriber 二つのロールがあります。Analytics Hub にも Publisher と Subscriber の概念があるため、以下では Pub/Sub の Publisher や Pub/Sub の Subscriber として明記して、区別します。Pub/Sub の Publisher は、メッセージを Topic に送信します。Topic は受けたメッセージを発信します。Pub/Sub の Subscriber は、Topic をサブスクライブする際、Subscription を作成します。この Subscription を経由して、Topic からの発信を受信します。

Pub/Sub の機能の詳細については、公式ドキュメントをご参照ください。

リリース内容

概要

今回のリリースの前に、Analytics Hub は BigQuery のデータ共有のみをサポートしていました。しかし、このリリースによって、Pub/Sub Topic の共有機能もサポートされるようになります。

Analytics Hub を介する Pub/Sub Topic 共有のイメージは以下の図のようです。


図:https://cloud.google.com/bigquery/docs/analytics-hub-stream-sharing#architecture
より引用

では、まずは図の中の名詞について簡単に紹介します。

Data Publisher Project 側

  1. Shared Pub/Sub Topic

    Analytics Hub を介して、Publisher 側が共有したい Topic。共有の基本単位。この Topic から Subscriber へメッセージが配信されます。

  2. Listings

    Subscriber が Analytics Hub で検索可能な Shared Pub/Sub Topic のリファレンス(Topic のインターネット上の位置を指す以外に、トピックの説明などの情報も含まれます)

  3. Exchange

    Listings をグループ化する容器のイメージ

Data Subscriber Project 側

  1. Linked Pub/Sub Subscriptions

    Shared Pub/Sub Topic の Listings をサブスクライブするとき、Data Subscriber Project 側にこの Linked Pub/Sub Subscriptions が作成されます。Linked Pub/Sub Subscriptions は通常の Pub/Sub の Subscription と似ている機能をしており、Shared Pub/Sub Topic からのメッセージを受信する機構です。

では、Analytics Hub を介する Pub/Sub Topic 共有の全体像について説明します。Analytics Hub が Publisher と Subscriber を仲介するイメージです。まず Subscriber は Analytics Hub で検索して、気になる Shared Pub/Sub Topic の Listings を見つけます。気になる Listings を見つけたら、Publisher が提供した連絡先に従って Subscriber から Publisher に連絡をとり、サブスクライブする権限を要求します。要求が受理され権限が付与されると、Subscriber はサブスクライブすることが可能となります。

Analytics Hub を介する Pub/Sub Topic 共有のメリットは以下になります。

  1. Pub/Sub によるリアルタイムのデータ送受信ができます。

  2. 共有するために新たにトピックを作成したりデータを複製することが不要であり、Pub/Sub の使用料金以外の追加コストも不要です。

  3. データの提供者とデータの利用者を繋ぎます。Publisher はデータ提供をビジネス化、収益化することができます。Subscriber は、組織の境界を超えて世界中の Publisher が提供する価値ある Topic を検索して、利用することができます。

メリットの詳細はこちらの Google Cloud ブログもご参照ください。

ただし、Analytics Hub を介する Pub/Sub Topic 共有を使う時、以下の制限があることにも注意すべきです。

  1. 一つの Shared Pub/Sub Topic には、、最大 10,000 の Subscription を持つことが可能です。注意すべきところとして、Analytics Hub 以外で作成された Subscription もここに含まれます。例えば、Pub/Sub から作成された Subscription も含まれます。

  2. 今回のリリースでは Pub/Sub Lite はサポート対象に含まれていません。Pub/Sub Lite の詳細は公式ドキュメントを参照してください。

制限の詳細は、公式ドキュメントをご参照ください。

使用方法の紹介

それでは、実際に Analytics Hub による Pub/Sub Topic の共有を使ってみましょう。具体的な手順を説明する前に、Analytics Hub による Pub/Sub Topic の共有を使用する全体像について説明します。

  1. Topic を共有する手順
    Publisher が、Topic を共有するための Exchanges と Listings を作成します。特定のユーザーではなく全てのユーザーに公開したい場合は「Listing の Public Discoverability 属性の設定」と「全てのユーザーに Listing を検索できる権限を付与する設定」の両方を行います。

  2. データを利用する手順
    Subscriber が Listing を検索し、利用したいデータを探します。データが見つかった場合、そのデータの Publisher が提供する連絡先に従って、サブスクライブする権限を要求します。Publisher は要求を確認し、問題がなければサブスクライブする権限を Subsciber に付与します。権限が付与されると、Subscriber はその Topic をサブスクライブすることができるようになります。

それでは、続いて、Publisher と Subscriber の立場で、それぞれの手順を説明します。使い方の説明の画像はすべて英語表記のものです。日本語表記の方は適宜読み替えてください。

Publisher 側の手順

  1. 必要な API を有効化

Analytics Hub による Pub/Sub Topic の共有を使うために、まず Analytics Hub API を有効化する必要があります。こちらにアクセスして、[ENABLE] のボタンを押すと、有効化できます。

Pub/Sub の API も必要になるので、もし有効化していない場合、有効化する必要があります。

  1. Exchange を作成する

BigQuery の画面を開き、左側のパネルの [Analytics Hub] のボタンを押すと、Analytics Hub の画面に入ります。

画面上部の [CREATE EXCHANGE] を押します。

右側に Create exchange の設定パネルが出ます。

  • Location type: Exchange を作成する地理的場所を選択します。日本国内からのサブスクライブが多い場合は日本国内がよいでしょう。
  • Display name: 必要に応じて設定します。
  • Public Discoverability: 今回は全てのユーザーから検索可能のようにしたいので、On にスイッチします。
  • 他の箇所 : Exchange に関する説明の設定です。必要に応じて設定します。スキップしても大丈夫です。

Public Discoverability について説明します。

  • Off に設定する場合: Exchange 内の Listing はユーザーに公開されなくなります。Listing を個別に公開したい場合は、以下の二つを実施する必要があります。
  1. Listing の単位で Public Discoverability を On にします。
  2. Listing の単位で、Analytics Hub Viewer のロールを付与します。
  • On に設定する場合: Exchange 内の Listing は全ユーザーに公開されます。ただし、On にしただけでは実際に公開されたことにはならず、以下を実施する必要があります。
  1. Listing の単位で、Analytics Hub Viewer のロールを付与します。

また、Exchange の単位で Public Discoverability を On にすると、Listing の単位では Off に設定できないことに注意してください。

以下の画像のように入力したら [CREATE EXCHANGE] を押して、Exchange の作成は完了です。Permissions に関する設定は、後の Listings のセクションで説明するので、ここでの [Exchange Permissions] の設定はスキップします。

  1. Listing を作成する

作成できた Exchange の名前を押します。

Exchange の管理画面に入ります。Exchange の中に Listing を作成するために、画面上部の赤枠内の [CREATE LISTING] を押します。

次に、[Configure data] を設定します。まずは [Resource type] に Pub/Sub Topic を選択し [NEXT] を押下します。

次に、以下のように [Listing details] を入力し [NEXT] を押下します。

  • Display name: 必要に応じて設定します。
  • Category: 配信したいデータの種類によって決まります。例えば、教育関連のデータを配信したい場合、Category は Education を選びます。
  • Public Discoverability: Exchange を作成する際に On に設定したため、こちらは自動的に On になります。 OFF にすることもできません。
  • Documentation: Listing の説明ドキュメントです。スキップしても大丈夫です。
  • 他の箇所: アイコンや補足情報の設定です。スキップして大丈夫です。

次に、以下のように [Listing contact information] を入力し [NEXT] を押下します。

  • Request access contact: URL かメールアドレスを設定できます。
  • 他の箇所: Request access contact 以外の連絡情報。Request access contact だけで良い場合、スキップしても大丈夫です。

Request access contact は、Subscriber が Publisher にサブスクライブする権利を要求するための必要な情報です。後の Subscriber の手順のセクションでも説明しますが、URL を設定する場合、Publisher が用意するページに誘導し、そのページで Subsciber が Publlisher に個人情報などを送ります。メールアドレスを設定する場合、Subscriber が Publisher にメールで要求を送ることができます。どの Subscriber に共有するかを管理したい場合には、必ず設定するようにしましょう。

入力が完了して、[PUBLISH] ボタンを押すと、Listing の作成は完了します。

Listing を作成した後も、Actions の下の三つの点を押下して現れる [Edit listing] をクリックすると、設定の編集が可能です。ただし、Resource type の変更はできないため注意してください。Display nameCategoryDocumentation などは編集可能です。

  1. Listings を閲覧できる権限を付与する

Exchange を作成するセクションでも紹介しましたが、ユーザーから Listing を検索可能にするためにはユーザーに Listings を閲覧できる権限を付与する必要があり、先に説明した Public Discoverability を On に設定する操作だけでは足りません。

特定のユーザーから Listing を検索可能にするには、その特定のユーザーの Google アカウントに閲覧できる権限を付与します。

全ユーザーから検索できるようにしたい場合、全ユーザーに閲覧できる権限を付与する必要があります。以下では、全ユーザーに権限を付与する方法を説明します。特定のユーザーのみが閲覧できるようにしたい場合は、以下の allAuthenticatedUsers をそのユーザーのアカウントに置き換えてください。

Actions の下の三つの点を押し、[Set permissions] を押します。

次に、出てきたパネルの右上の [ADD PRINCIPAL] を押します。(PRINCIPAL(プリンシパル)とは Google Cloud におけるアカウントの総称です。こちらもご参照ください。)

現れる設定画面で、

  • New principals: allAuthenticatedUsers を入力します。
  • Role: Analytics Hub Viewer を選択します。

最後に [SAVE] を押します。これで、allAuthenticatedUsers、つまり、全体の承認されたユーザーが、Listing を検索できるようになります。

以上で、Listings を公開するための Publisher 側の設定は全部完了しました。続いて、Subscriber の視点で、サブスクライブするために、どんな設定が必要か説明します。

Subscriber 側の手順

まずは Analytics Hub の画面を開きます。右上に [SEARCH LISTINGS] のボタンを押します。

そのボタンを押すと、Analytics Hub の検索画面が出ます。まずこの画面を少し確認しましょう。

画面上部に検索欄があり、ここで欲しいデータのキーワードを入力して Topic を検索することができます。左側のパネルでは、Categories や Location などでフィルターをかけることができます。具体的なプロジェクト名やトピック名を知らなくても、欲しいデータのキーワードや Category などのイメージがあれば検索し、データにアクセスすることができます。これは、Analytics Hub を介する Pub/Sub Topic 共有の大きな特徴です。Publisher は、 Categories や Topic の説明文章をしっかりと検討して設定すれば、この検索によって Subscriber に発見してもらえる可能性が上がります。

先ほど作成した Topic の Listing の名前で検索してみると、その Listing が検索結果に現れることが確認できます。

Listing のパネルを押下すると、その Listing の詳細画面が出ます。Listing の名前の下に、[SUBSCRIBE][REQUEST ACCESS] 二つのボタンがありますが、初めは [SUBSCRIBE] は押せない状態です。これは、まだ Publisher からサブスクライブする権限を付与されていないためです。権限を要求するには、[REQUEST ACCESS] を押します。Publisher の手順のセクションで紹介した Request access contact の設定内容によって、専用 URL に誘導されるかメールアプリが開くので、どちらかの方法で Publisher と連絡をとり、サブスクライブする権限を要求します。

Publisher は 権限付与の要求を受けとって、サブスクライブする権限を付与できます。具体的な操作方法は後で説明します。権限を付与されると、Subscriber はサブスクライブできるようになります。先ほどの Lisiting の詳細画面を再表示すると、以下のように [SUBSCRIBE] を押下できる状態となります。

[SUBSCRIBE] のボタンを押すと、右側に Subscription の作成のパネルができます。作成方法は Pub/Sub で Subscription を作成することと同じです。詳しい設定の説明は割愛します。Pub/Sub の公式ドキュメントをご参照ください。

設定が終わると、Subscription が作成されます。この Subscription を用いて、サブスクライブした Topic からデータを受信できます。

Subscriber にサブスクライブする権限を付与する手順

権限付与の要求を受けとったあと、Publisher がどのようにサブスクライブする権限を付与するかについて紹介します。以下の操作は Subscriber と連絡を取り、Subscriber のアカウントの情報を把握してから実行します。

作成した Listing の画面に戻り、Actions の下の三つの点を押し、[Set permissions] を押します。

次に、右上の [ADD PRINCIPAL] を押します。

そうすると、principal の設定画面が出ます。

  • New principals: Subscriber が提供したアカウントを入れます。
  • Role: Analytics Hub Subscriber のロールを選びます。

[SAVE] を押すと、Subscriber はサブスクライブすることができるようになります。

先ほど、似た手順で別のロールを付与したことを思い出してください。あちらは「Analytics Hub Viewer のロール」であり、Listing を「検索する」ために必要なロールです。一方こちらは「Analytics Hub Subscriber のロール」であり、Listing を「サブスクライブする」ために必要なロールです。サブスクライブするにはどちらのロールも必要ですので、間違えないようにしましょう。

まとめ

Analytics Hub による Pub/Sub Topic の共有が登場したことで、通常の Pub/Sub とは異なり具体的なプロジェクト名や Topic 名を知らなくても、Categories などのフィルター設定やキーワードによる検索によって、求めたいデータを共有する Topic の Listing を見つけることが可能になりました。まるで SNS や YouTube などの使用感に近く、データの流通性が高くなり、データの収益化も期待できるだろうと感じました。

Discussion