変更ストリームを使用した Bigtable アーキテクチャの拡張
Google Cloud Japan Team
※この投稿は米国時間 2023 年 9 月 16 日に、Google Cloud blog に投稿されたものの抄訳です。
エンジニアが使用する Bigtable のデータ ワークフローには、大量のトランザクション情報と分析情報が含まれています。このたび、Bigtable 変更ストリームがリリースされ、データ ワークフローを強化してイベントベースのアーキテクチャやオフライン プロセスに対応できるようになりました。この記事では、この新機能について説明するとともに、変更ストリームを取り入れたアプリケーションの例をいくつかご紹介します。
変更ストリーム
変更ストリームは、Bigtable テーブルに加えられたミューテーションをリアルタイムでキャプチャして出力します。この変更ストリームには Data API からアクセスできますが、おすすめの方法は Dataflow コネクタを使うことです。これにより変更ストリームの Data API および Apache Beam SDK による複雑なパーティション処理を抽象化できます。Dataflow は、リソースのプロビジョニングおよび管理を自動的に行ってくれるマネージド サービスで、ストリーム データ処理において高いスケーラビリティと信頼性を発揮します。
このコネクタを使えば、Bigtable のパーティションの変化を正確にトラッキングしたり、機能面以外の要件に煩わされたりすることなく、ビジネス ロジックに集中することが可能となります。
まず、Google Cloud コンソール、gcloud CLI、Terraform、またはクライアント ライブラリから、テーブルの変更ストリームを有効にします。続けて、変更ストリームのクイックスタートの手順に沿って開発を開始します。
アーキテクチャ例
変更ストリームを使用すると、データの変更点をリアルタイムでトラッキングしてすばやく対応することが可能となります。たとえば、データが更新されたタイミングで自動的にタスクを実行したり、データを活用する新機能をアプリケーションに追加したりすることが簡単にできます。変更ストリームを取り入れた Bigtable ユースケースのアプリケーション アーキテクチャ例をいくつかご紹介します。
最新の AI でデータを強化
現在、AI 用の新しい API が続々と開発されており、アプリケーション データに付加価値を与えることができるようになっています。たとえば、音声、画像、翻訳用の AI を使って、顧客のデータを強化できます。Bigtable 変更ストリームを使えば、新しいデータが追加されたタイミングで、簡単にデータを強化することが可能となります。
ご覧いただいているのは、Vertex AI で利用可能な構築済みモデルを使って、音声メッセージを文字に変換し、要約している例です。Bigtable に生の音声ファイルがバイト形式で格納されており、新しいメッセージが追加されると、変更ストリームによって AI の音声処理が開始されます。具体的には、Dataflow パイプラインが Speech API を使ってメッセージをテキストに変換し、PaLM API を使って変換後のテキストを要約します。これらの結果が Bigtable に書き込まれ、ユーザーは希望する形式でメッセージを取得できます。
全文検索とオートコンプリート
全文検索とオートコンプリートは、オンライン ショップやストリーミング メディア プラットフォームなど、さまざまなアプリケーションに取り入れられている一般的な機能です。例として、ご覧の音楽プラットフォームでは、Elasticsearch 内でアルバム名、曲名、アーティストをインデックス化し、音楽ライブラリに全文検索機能を追加しています。
新曲が追加されると、Dataflow パイプラインによって変更点がキャプチャされます。続けて、データが抽出され、インデックスが作成されて、Elasticsearch に書き込まれます。この仕組みにより、インデックスが常に最新の状態に保たれ、ユーザーは Cloud Functions でホストされた検索サービスを介してクエリを実行できます。
イベントベースの通知
アプリケーションを開発するにあたって、リアルタイムでイベントを処理したり、お客様にアラートを通知したりできると大変便利です。たとえば、ポップアップ、プッシュ通知、メール、SMS などのアーキテクチャをカスタマイズできます。ここでは、物流 / 運送会社の例を紹介します。
物流 / 運送会社は、常時何百万もの荷物を処理して世界中に届けています。その過程で、荷物が配送センターに到着すると同時に、現在の場所を追跡できるようにして、次のロケーションへの配送が滞らないようにする必要があります。また、新しく買った靴の配送日や、病院で使用する業務用手袋の出荷日など、さまざまな理由で荷物の最新情報を知りたがっているお客様のニーズに応えるために、メールまたは SMS での通知登録ができるようにすると便利です。
こちらは、Bigtable 変更ストリームに最適な、イベントベースのアーキテクチャの例です。配送センターから届いた最新の荷物情報が Bigtable に書き込まれると、その変更ストリームが Dataflow のアラート システムによってキャプチャされます。続けて、SendGrid や Twilio などの API を使って、メールまたは SMS での通知を簡単に行うことができます。
リアルタイム分析
Bigtable を使用するアプリケーションには通常、大量のデータがあります。変更ストリームは、大規模なバッチジョブを不定期に行うのとは異なり、データを受信すると同時に指標を小刻みに更新できるため、リアルタイム分析の可能性が広がります。たとえば、一定間隔のウィンドウ スキームを作成して、そのウィンドウ(時間枠)内でデータの集計クエリを実行し、結果を別テーブルに書き込んで、分析やダッシュボード出力を行うことができます。
ご覧のアーキテクチャは、オンライン ショップ向けに SaaS プラットフォームを提供している会社の例です。この会社は、顧客のためにパフォーマンス指標(アクセス数、コンバージョン率、放棄されたカート、最もよく見られた商品など)を表示したいと考えました。そこで、これらのデータを Bigtable に書き込み、利用者が希望する項目について 5 分ごとにデータを集計し、結果を分析テーブルに書き込むようにしました。分析テーブルのデータに加えて、D3.js などのライブラリを使ってリアルタイムでダッシュボードを作成し、分析結果をさらに把握しやすくすることもできます。
実際にやってみるには、こちらのチュートリアル(曲の分析データを収集する例)をご利用ください。
次のステップ
これで、イベント ドリブンなアーキテクチャで Bigtable を使用する新しい方法や、変更ストリームを使った分析のためにデータを管理する方法についてご理解いただけたと思います。この新機能について詳しく学び、実際に使ってみるには、以下のステップにお進みください。
ー Cloud Bigtable、デベロッパー アドボケイト Billy Jacobson