
Google Cloud Pub/SubはGoogleが2015年に一般公開したマネージド型のメッセージングサービスで、グローバル規模のパブリッシュ/サブスクライブ通信を、サーバ運用なしで実現する。起源はGoogle社内の広告計測や検索インデックス更新で使われていた内部メッセージング基盤で、Gmailのリアルタイム通知や広告システムなど、社内サービスを支えてきた実績をクラウド向けに開放したものだ。Kafkaのようにブローカクラスタを自分で立ち上げる必要がなく、トピックとサブスクリプションを作るだけで世界中どのリージョンからでも配信を受けられるのが大きな特徴である。本記事ではPub/Subの設計思想、配信モデル、KafkaやAmazon SNS/SQSとの比較までを整理する。
この記事の目次
- グローバルエンドポイントという思想
- Push型とPull型、二つの配信モデル
- GCPサービスとの相互結合
- Kafka・SNS/SQSと比べたとき
- まとめ
グローバルエンドポイントという思想

多くのメッセージングサービスがリージョン単位でクラスタを動かすのに対し、Cloud Pub/Subは「グローバルエンドポイント」というモデルを採る。publisherはどこのリージョンからアクセスしても同じトピックに書き込め、subscriberもどこのリージョンからでも受信できる。内部的にはGoogleのバックボーン網が地域間の同期を担い、メッセージは複数のゾーン・リージョンに永続化されるため、可用性と耐久性が高い設計になっている。
配信保証は「at-least-once(最低一回)」が基本で、重複を許容しつつ取りこぼしを防ぐ。近年は「exactly-once配信」「順序保証付きキー」といったオプションも追加され、決済や在庫管理のような厳密性が必要な用途にも適用できるようになった。メッセージは最大7日間保持できるため、コンシューマ側の障害でも一定時間内であれば再処理が可能だ。
Push型とPull型、二つの配信モデル

Cloud Pub/SubではトピックからメッセージをsubscriberへどのようにデリバリするかでPull型とPush型の2モードがある。Pull型はサブスクライバ側がストリーミングRPCで取りに行く方式で、高スループットなコンシューマやDataflowのようなパイプラインから利用されることが多い。クライアントが取りに行く分、Backpressure制御が効きやすく、急なトラフィックでも下流が壊れにくい。
Push型はサブスクリプション設定に指定したHTTPSエンドポイントへ、Pub/Sub側がメッセージをPOSTする方式だ。Cloud RunやCloud Functionsと相性が良く、サーバレス構成で「メッセージが来たら関数が走る」というイベント駆動を簡単に作れる。認証付きトークンを自動で付与してくれるため、Push先のエンドポイントが安全であることも担保しやすい。
GCPサービスとの相互結合

Pub/SubはGCP内のさまざまなサービスからの「呼び出されるハブ」「呼び出すハブ」両方の役割を担う。Cloud StorageへのアップロードやBigQueryのジョブ完了、Cloud Buildのステータス変化など、多くのGCPイベントは内部的にPub/Subトピックに流れている。Eventarcはこれを束ねて統一的に扱うイベントルータとして機能する。
下流側でもBigQueryサブスクリプションを使えば、Dataflowを介さずにメッセージを直接BigQueryテーブルに書き込める。また「Pub/Sub Lite」というゾーン限定の廉価版もあり、コストを抑えたい大量ログ用途や、リージョン単位で完結する処理に向く。全体として「GCPのイベント連携といえばPub/Sub」と言える接続性を持っているのが強みだ。
Kafka・SNS/SQSと比べたとき

メッセージング市場ではOSSのKafka(およびそのマネージド版Confluent Cloud)、AWSのSNS+SQSが主要な競合となる。Kafkaはパーティション・コンシューマグループといった細かなチューニングが可能で、自分でブローカやスキーマレジストリを運用する代わりに高い制御性を得たい組織に向く。AWS SNSはファンアウト型のpub/sub、SQSはキューを単独で使うシンプルなモデルで、SNS+SQSを組み合わせて似た構成を作ることが多い。
Cloud Pub/Subは「グローバルでロックインの少ない簡素なAPI」「GCPサービスとのワンクリック連携」「ブローカ運用不要」という総合点で勝負するサービスだ。Kafka互換APIを提供する「Pub/Sub Kafka shim」もあり、Kafka資産を多少抱えていても移行しやすいよう配慮されている。「メッセージングを単に動かしたい」のか「Kafka特有の機能まで使い倒したい」のかが選定の分かれ目になるだろう。
まとめ
Cloud Pub/SubはGoogle社内のメッセージング基盤を一般向けに開放したサービスで、グローバルエンドポイントとフルマネージド運用を兼ね備えたユニークな存在である。Push/Pullの二モード、BigQueryやEventarcとの密な統合、Pub/Sub LiteによるコストオプションがGCPのイベント駆動アーキテクチャの土台を作っている。Kafkaのような細やかさは必要ないが、確実かつグローバルに「とりあえずつながるメッセージング基盤」が欲しい場合の有力解と言える。
※本記事はIT用語辞典の手書きドラフトです。公開前に最新情報・出典を確認のうえ加筆修正してください。

コメント