Google のメッセージングサービス Cloud Pub/Sub とは?特徴やユースケース、料金体系まで徹底解説!
- BigQuery
- Cloud
- メッセージングサービス
Cloud Pub/Sub というサービスをご存知でしょうか? Google Cloud (GCP)に内包されており、リアルタイムデータやイベントデータの取り込みを行うためのメッセージングサービスです。 Cloud Pub/Sub を活用することで、分析イベントの取り込みやストリーミングなどを効率的に行うことができます。
本記事では、 Cloud Pub/Sub とは何か?という基礎的な内容から、 Cloud Pub/Sub の特徴、ユースケース、料金体系、活用事例まで一挙にご紹介します。
目次
Cloud Pub/Sub とは?
Cloud Pub/Sub は Google が提供するメッセージングサービスです。サーバーレスで提供されているため、ユーザーはサーバー構成を気にすることなく、すぐに利用することができます。さらに、フルマネージドサービスであるため、運用工数を削減できる点も嬉しいポイントです。
Cloud Pub/Sub は Publisher (メッセージを送る人)が Subscriber (メッセージを受け取る人)へ適切にメッセージを送るためのサービスであり、 Cloud Pub/Sub を活用することで Subscriber が複数のメッセージを同時に受信したり、 Publisher が複数の Subscriber に対して同時にメッセージを配信したりできます。
Cloud Pub/Sub の仕組みは「 Gmail 」「 Google 検索」「 Google 広告」などの各種 Google サービスでも採用されており、日々大量のデータを処理していることから、とても信頼性の高いツールであることが伺えます。
以下、 Cloud Pub/Sub のアーキテクチャを図で示します。
※出典: Google Cloud 公式ページ「 Pub/Sub とは」
このように、 Cloud Pub/Sub には「トピック」と「サブスクリプション」という2つのリソースが存在します。
なお、サブスクリプションには「 pull サブスクリプション」と「 push サブスクリプション」という2つの配信タイプがあり、 pull 型の場合は Subscriber が能動的にメッセージを確認する必要がありますが、 push 型の場合はサブスクリプションから Subscriber へメッセージが自動的に配信されます。
Cloud Pub/Sub でメッセージを送るためには、はじめにトピックを作る必要があり、トピックはメッセージの種類ごとに作成します。トピックを作成した後はトピックに紐づくサブスクリプションを作成します。これにより、 Publisher がメッセージを配信する度にサブスクリプションにメッセージが流れるようになり、 Subscriber の興味や関心に応じて適切なメッセージが Subscriber に届きます。
さらに、1つのトピックに対してサブスクリプションを複数追加することもできるため、複数人の Subscriber が同じメッセージを同時に受信し、各自が異なる目的でメッセージをそれぞれ利用することも可能です。
また、 Cloud Pub/Sub とは別に Cloud Pub/Sub Lite というサービスが存在します。これは Cloud Pub/Sub の簡易版であり、 Cloud Pub/Sub との違いは単一ゾーン(ネットワーク上の単位)でのサービスとなっている点です。 Cloud Pub / Sub と比較すると信頼性は劣りますが、コストを抑えながらメッセージングサービスを利用できる点は大きなメリットです。
なお、 Cloud Pub/Sub の類似サービスとして Amazon の Simple Notification Service (SNS)が挙げられます。この SNS も Cloud Pub/Sub と同様にフルマネージドで提供されるメッセージングサービスです。
両者の大きな違いとして、 Cloud Pub/Sub は pull 型と push 型の両方に対応していますが、 SNS は pull 型に対応していません。そのため、通知を自動化して能動的に情報を受け取りたい場合には Cloud Pub/Sub が最適なソリューションであると言えます。
ゾーンについて詳しく知りたい方は以下の記事でわかりやすく解説しています。
【クラウドの必須知識】「リージョン」と「ゾーン」の違いや選ぶときのポイントを徹底解説!
Cloud Pub/Sub の特徴
Cloud Pub/Sub にはどのような特徴があるのでしょうか。代表的なものをいくつかご紹介します。
プロビジョニング不要の自動処理
Cloud Pub/Sub には、シャード(情報分散により可用性を維持すること)やパーティション(ストレージを複数に分割すること)がありません。割り当てを設定し、実行用ファイルを作成・使用するだけなので、面倒なプロビジョニングは不要であり、工数をかけずに運用できます。
高いセキュリティレベル
Cloud Pub/Sub は HIPAA に準拠したサービスであり、きめ細かなアクセス制御とエンドツーエンドの暗号化を行うことができます。そのため、実業務でも安心して利用でき、セキュリティレベルの高い環境で作業を進めることが可能です。
Google Cloud (GCP)とのネイティブな統合
Cloud Pub/Sub は Google Cloud (GCP)に内包されたサービスであるため、 Google Cloud Storage (GCS)や Cloud Functions 、 Gmail のアップデートイベント、など、別のサービスとシームレスに統合できます。これにより、自社の状況に合わせて、柔軟にサービスを利用することが可能になります。
Cloud Pub/Sub のユースケース
Cloud Pub/Sub を活用することで何ができるのでしょうか。具体的なユースケースをご紹介します。
ストリーム分析
Google Cloud (GCP)のストリーム分析は、データを生成された瞬間から整理され、便利で使いやすいものにします。 Cloud Pub/Sub だけではなく、 Dataflow や BigQuery も基盤として使っているため、流動的かつ膨大なリアルタイムデータの取り込み、処理、分析が可能になります。
これにより、必要なリソースをプロビジョニングし、有益なデータをリアルタイムに取得することができます。プロビジョニングが抽象化されて複雑さが軽減されるため、データアナリストとデータエンジニアのいずれも、ストリーム分析にアクセスできる点は大きなメリットです。
Google Cloud (GCP)を活用したストリーム分析については以下の記事で詳しく解説しています。
Google Cloud(GCP)のストリーム分析がすごい!「 Pub / Sub 」や「 BigQuery 」など具体的なサービスを一挙紹介
非同期マイクロサービスとの統合
Cloud Pub/Sub は、従来型サービスのメッセージングミドルウェアとしてだけでなく、最新のマイクロサービスのシンプルな通信媒体としても使用できます。
push サブスクリプションは、 Cloud Functions や Google App Engine (GAE)、 Google Kubernetes Engine (GKE)、 Google Compute Engine (GCE)などのカスタム環境にイベントを配信します。なお、高スループットのストリームを効率よく処理したい場合は、低レイテンシの pull 配信も利用できます。
Google App Engine (GAE) に関心のある方は以下の記事が参考になります。
【GCP入門編・第5回】 Google App Engine の魅力とは? Google App Engine (GAE) でのアプリケーション起動方法!
Google Kubernetes Engine (GKE)に関心のある方は以下の記事が参考になります。
Google Kubernetes Engine ( GKE )の2021最新機能を一挙紹介!さらに便利で使いやすくアップデート?
リアルタイムなイベント配信
Cloud Pub/Sub では、イベントが未加工か処理された状態かを問わず、チームや組織の複数のアプリケーションでリアルタイム処理のために使用できます。これにより、イベントドリブンなアプリケーション設計のパターンを実現できます。なお、 Cloud Pub/Sub を使うことで、イベントを Cloud Pub/Sub にエクスポートする多くの Google システムと連携することが可能です。
データベース間でのデータ複製
Cloud Pub/Sub は、一般的にデータベースから変更イベントを分散するために使用されます。そして、これらのイベントを使って、 BigQuery やその他のデータストレージシステムでデータベースの状態や履歴に関するビューを作成できます。
負荷分散による信頼性確保
Cloud Pub/Sub を活用することで、負荷分散による信頼性確保を実現可能になります。例えば、サービスのインスタンスを複数ゾーンの Google Compute Engine (GCE)にデプロイし、共通のトピックにサブスクライブできます。いずれかのゾーンでサービスが失敗した場合は、他のサービスがその負荷を自動的に処理します。
Cloud Pub/Sub の料金体系
Cloud Pub/Sub は、主に以下5つの要素で料金が決まります。
- スループット費用
- ストレージ費用
- 下り(外向き)料金
- プロジェクト間の Cloud Pub/Sub 課金
- フィルタ適用後のメッセージ費用
それぞれについて詳しく見ていきましょう。
スループット費用
スループットとは、一定期間内に Cloud Pub/Sub のトピックに書き込まれたバイト数(パブリッシュスループット)、またはサブスクリプションからトピックへの読み取り(サブスクライブスループット)の合計バイト数です。
請求先アカウントのスループットは毎月 10 GB まで無料ですが、 10 GB 以降は「 TB あたり 40米ドル」となります。なお、この金額はすべての Google Cloud (GCP)リージョンで共通となります。
データ容量/月 | 料金 |
---|---|
最初の 10 GB | 無料 |
10 GB 以上 | 40米ドル/ TB |
ストレージ費用
未確認メッセージのサブスクリプションへの保存は最大 7 日間無料ですが、以下3つのいずれかに該当した場合は料金が発生します。
- トピックがすべてのメッセージを保持するように構成されている
- サブスクリプションが確認済みメッセージを保持するように構成されている
- サブスクリプションのスナップショットが作成される
上記のケースでは Cloud Pub/Sub のストレージ料金が発生し、「 GiB/月あたり 0.27 米ドル」が利用料金に追加されます。
下り(外向き)料金
原則、インターネットの下り(外向き)料金と Google Cloud (GCP)のリージョン間でのメッセージ配信の料金は VPC ネットワーク料金と同様です。 Cloud Pub/Sub の使用に対するゾーンの下り(外向き)料金は発生しませんが、 Google サービスへの下り(外向き)は下り(外向き)料金の対象となります。
また、例えば、リージョン A からリモートリージョン B のリージョンエンドポイントにメッセージをパブリッシュする場合や、ストレージポリシーでメッセージをリージョン A に転送するために Cloud Pub/Sub が必要になる場合は、下り(外向き)料金が発生します。
加えて、メッセージがリージョン境界を通過する度に下り(外向き)の料金が発生します。メッセージが保存されているリージョンとは異なるリージョンにサブスクライバーが複数ある場合、各サブスクライバーへの配信には下り(外向き)料金が別途請求されます。
さらに、メッセージストレージポリシーの適用により、 Google Cloud (GCP)リージョンから外へのデータ送信が必要になる場合、リージョン下り料金(外向き)が加算される可能性があります。
このように、下り(外向き)料金の考え方は少し複雑なので、サービスを利用する前に正しく理解しておきましょう。
フィルタ適用後のメッセージ費用
Cloud Pub/Sub はフィルタに一致しないメッセージを自動的に確認応答しますが、これらのメッセージには料金が発生します。フィルタリングされたメッセージには下り(外向き)料金は発生しません。
最小サイズ(1,000 バイト)は、 Cloud Pub/Sub サービスが自動的に確認するメッセージには適用されません。メッセージ配信料金は、これらのメッセージのバイト数に基づいており、メッセージのサイズが小さいかどうかは考慮されません。
課金額はスループット料金と同一であるため、具体的な料金は以下の通りです。
データ容量/月 | 料金 |
---|---|
最初の 10 GB | 無料 |
10 GB 以上 | 40米ドル/ TB |
プロジェクト間の Cloud Pub/Sub 課金
複数のプロジェクトにわたって Cloud Pub/Sub を使用している場合は、リクエストしたリソースを含むプロジェクトに対して Cloud Pub/Sub の料金が請求されます。パブリッシュに対して課金されるのは、トピックを含むプロジェクトであり、サブスクリプションに対して課金されるのは、サブスクリプションを含むプロジェクトです。
例えば、サブスクリプションがプロジェクト A に含まれている場合は、サブスクリプションがプロジェクト B 内のトピックに関連付けられていても、サブスクリプションから取得されるデータの料金はプロジェクト A に課金されます。また、プロジェクト A の承認済みサービスアカウントが、プロジェクト B のサブスクリプションからのメッセージを使用する場合、サブスクリプションから取得されるデータの料金はプロジェクト B に課金されます。
Cloud Pub/Sub の活用事例
本章では、 Cloud Pub/Sub を実業務に活用している具体的な事例をご紹介します。
恋愛・婚活マッチングサービスである Pairs を運営する株式会社エウレカは、そのシステムモニタリング環境として Google Cloud (GCP)を採用しています。同社では、数年前から SRE チームを発足し、サービス品質の向上を追求しています。
Pairs のリリースは2012年10月でしたが、2014年7月の時点で会員数が100万人を突破し、サービス規模はみるみる拡大していきました。それに伴い、徐々にシステムモニタリングの必要性が高まっていったのです。
同社では、Pairs のリリース直後は目先の作業に追われており、ログの収集・活用が後回しになっていました。しかし、2015年に当時 PHP で稼働させていたアプリケーションを Go に書き換えるプロジェクトがスタートし、そのタイミングでログ基盤の見直しを図り、そのプラットフォームとして Google Cloud (GCP)を採用しました。
同社の担当者は、 Google Cloud (GCP)を採用する決め手となったのは、高いコストパフォーマンスとスケーラビリティだと語っています。将来的なデータ増加にも耐えうるデータ分析基盤が必要不可欠であったため、柔軟にリソースを増減でき、高速かつ高精度なデータ分析を実現できる BigQuery の存在も大きかったようです。
この BigQuery を有効活用するために Cloud Pub/Sub が使われています。従来、ログの管理や操作に課題があったそうですが、 Cloud Pub/Sub や Dataflow などを活用して、ログに関する取り扱いを改善したことで、大きな業務効率化を実現しました。
現在、主要なログに関しては BigQuery にエクスポートして、いつでも集計できるように工夫していたり、システムログを Google Cloud Storage にエクスポートして長期保存したりして、柔軟かつ利便性の高いログ運用を実行しています。
このように、 Cloud Pub/Sub を活用して、ログ管理やログ操作を効率化し、 BigQuery と連携させて自社の生産性向上を実現している事例のご紹介でした。
BigQuery に関心のある方は以下の記事がオススメです。
超高速でデータ分析できる!専門知識なしで扱えるGoogle BigQueryがとにかくスゴイ!
Cloud Pub/Sub 利用時の注意点
Cloud Pub/Sub はとても便利なサービスですが、利用時に注意すべき点が存在します。それは「ループするアーキテクチャを構築しないようにする」ということです。
例えば、以下のアーキテクチャをご覧ください。
上図では Cloud Pub/Sub のトピックから Cloud Functions に push 型でメッセージを配信しています。 Cloud Functions は push 型の subscriber であり、紐づいている Cloud Pub/Sub のトピックにメッセージを送信するため、このような構成ではメッセージが際限なくループしてしまいます。
その結果、実行回数が指数関数的に増えていき、信じられないほどの高額請求に繋がるリスクがあります。 Cloud Pub/Sub を扱う際には、構成やメッセージの送信先を間違えないように十分に注意してください。
まとめ
本記事では、 Cloud Pub/Sub とは何か?という基礎的な内容から、 Cloud Pub/Sub の特徴、ユースケース、料金体系、活用事例まで一挙にご紹介しました。
Cloud Pub/Sub を活用することで、ストリーム分析や非同期マイクロサービスとの統合、リアルタイムなイベント配信など、企業は様々なことを実現できます。
Cloud Pub/Sub はプロビジョニング不要の自動処理や強固なセキュリティなどが備わっているため、手間なく安全に作業を進めることが可能です。さらに、 Google Cloud (GCP)とネイティブに統合できるため、他の Google Cloud (GCP)のサービスと組み合わせることで、様々なニーズに応えられるソリューションとなっています。
Cloud Pub/Sub の利用用途は多岐にわたりますが、本記事でご紹介したストリーム分析は、企業が成長する上でとても重要な鍵を握ると言えるでしょう。 Cloud Pub/Sub と BigQuery を組み合わせて使うことで、自社のデータ活用を促進し、業務効率化や生産性向上に繋げることができます。
Cloud Pub/Sub と BigQuery はどちらも Google Cloud (GCP)に内包されたサービスであるため、 Google Cloud (GCP)という一つの世界の中で、効率的なデータ活用を実現できるのです。本記事を参考にして、ぜひ Google Cloud (GCP)の導入を検討してみてはいかがでしょうか。
弊社トップゲートでは、Google Cloud (GCP) 利用料3%OFFや支払代行手数料無料、請求書払い可能などGoogle Cloud (GCP)をお得に便利に利用できます。さらに専門的な知見を活かし、
- Google Cloud (GCP)支払い代行
- システム構築からアプリケーション開発
- Google Cloud (GCP)運用サポート
- Google Cloud (GCP)に関する技術サポート、コンサルティング
など幅広くあなたのビジネスを加速させるためにサポートをワンストップで対応することが可能です。
Google Workspace(旧G Suite)に関しても、実績に裏付けられた技術力やさまざまな導入支援実績があります。あなたの状況に最適な利用方法の提案から運用のサポートまでのあなたに寄り添ったサポートを実現します!
Google Cloud (GCP)、またはGoogle Workspace(旧G Suite)の導入をご検討をされている方はお気軽にお問い合わせください。
メール登録者数3万件!TOPGATE MAGAZINE大好評配信中!
Google Cloud(GCP)、Google Workspace(旧G Suite) 、TOPGATEの最新情報が満載!