Cloud Pub/Sub のキホン
みなさん、こんにちは!Google Cloudの高田です。この記事は Google Cloud Japan Advent Calendar 2022の今から始める Google Cloud の12/18の記事になります。(12/18に鋭意作成中 )この記事では、Cloud Pub/Subについて書いていきたいと思います。(公式ドキュメントはこちら)
TL;DR;
- Cloud Pub/Sub とは何か
- リアルタイムデータ分析のアーキテクチャ
- Pub/Sub と Pub/Sub Lite の使い所
- その他、知っておいてもらいたい機能
Cloud Pub/Sub とは何か
一言で Pub/Sub を説明すると、スケーラブルで非同期なメッセージングサービスになります。Pub/Sub を使うことによって、アプリケーションやシステムで発生したイベントをトリガとしてメッセージを発行し、さまざまなサービスにメッセージを転送し、処理を行うことが可能になります。(あくまでも Pub/Sub が担う処理はメッセージング)
例えば、エンドユーザー アプリからのユーザー インタラクション イベントや、システムからのサーバー イベントをトリガとして、メッセージを Pub/Sub に転送します。Pub/Sub を経由して、Dataflow を利用し、BigQuery にデータを転送したり、Cloud Run や、Cloud Function 上で構築されたアプリケーションを実行することができます。そのメッセージングを担うのが Pub/Sub になります。
パブリッシャー、トピック 、サブスクリプション、サブスクライバーは Pub/Sub を使う上で理解しておく必要があるコンポーネントなので、簡単に説明していきます。
-
パブリッシャー
メッセージを作成して、メッセージをトピックに送信するアプリケーションになります。メッセージはアプリケーションの中で開発者が任意のメッセージを作成する場合と、システムで発生したイベントで作成する場合があります。 -
トピック
パブリッシャーによるメッセージの送信先となる、名前付きのリソースです。パブリッシャーは、このトピックを指定して、メッセージを送信します。 -
サブスクリプション
サブスクライバーがパブリッシャーから発行されたメッセージを受信するには、必ずサブスクリプションが必要になります。サブスクライバーはGoogle Cloud のコンソール、もしくは gcloud コマンドを利用して作成します。サブスクリプションには、pull サブスクリプション、push サブスクリプション、BigQuery のサブスクリプションがあります。 -
サブスクライバー
サブスクリプションからメッセージを受信するためのアプリケーションになります。
利用するための一連の流れはこちらのクイックスタートがわかりやすいので、参考にしてみてください。
リアルタイムデータ分析のアーキテクチャ
リアルタイムデータ分析のアーキテクチャでは、データの取り込みで Pub/Sub が使われます。その理由としては Pub/Sub を利用することで世界中のアプリケーションから、1 秒間に億単位のイベントを取り込んで分析できます。リアルタイムデータ分析のユースケースでは、大量のイベントを取り込むことができるスケーラビリティが重要なポイントになります。
引用: Pub/Sub > ユースケース > ストリーム分析
Cloud Pub/Sub と Pub/Sub Lite の使い所
Pub/Sub には、2つのタイプのサービスがあります。1つは Pub/Sub で、もう1つは Pub/Sub Lite になります。
大きな違いは、Pub/Sub は自動でグローバルのリソースとしてプロビジョニングされるため、容易に運用することができます。一方、Pub/Sub Lite は コストを抑えて運用する必要がある場合におすすめされるソリューションで、ユーザが自身で容量の設定などの運用作業を行う必要があります。そのため、信頼性高く、ユーザがリソースを調整する運用コストを抑えて、容易に開発を行うためには、Pub/Sub が選択肢となります。(機能の比較表)
また、Pub/Sub Lite は、gRPC pull メッセージ配信のストリーミングのみをサポートしています。サブスクライバーで利用するサービスによっては、より柔軟なメッセージ配信モードをサポートしている、Pub/Sub にする必要があるため、重要なポイントになります。
さいごに
Cloud Pub/Sub は Google Cloud のデータ分析においては非常に重要なサービスで、リアルタイム分析のユースケースでは基本的に利用されるサービスになります。
今回、ご紹介した内容以外にも、メッセージの順序指定や、1回限りの配信、メッセージの暗号化など、さまざまな機能がありますので、ぜひドキュメントを読んで、試してみていただけたらと思います。
それでは Enjoy hacking and the holidays !
Discussion