TL

Cloud Service

Pub/Sub for IoT Ingestion

大量のデバイスからのテレメトリを取りこぼさず受け止め、後段の分析・処理へ橋渡しする IoT 取り込み基盤。フルマネージドな Pub/Sub をデバイスの入口に据える設計で、AWS の IoT Core+Kinesis に近い役割を担う。

中級信頼性パフォーマンス効率運用上の優秀性セキュリティ
最終更新: 2026-06-28公式ドキュメント ↗
TL;DR要点だけ先に
  • 1.多数のデバイスからのテレメトリを Pub/Sub で一括受信し、後段へ疎結合に渡す入口。
  • 2.デバイス急増やバースト送信もサブスクリプションがバッファし、処理側のペースで捌く。
  • 3.GCP の IoT Core 終了後はこの Pub/Sub 直結が IoT 取り込みの標準パターン。

解決する課題

数万から数百万のデバイスが送るテレメトリを、ブローカの構築やスケール調整を待たずに取り込み、後段の分析・保存・通知へつなげられます。GCP の旧 IoT Core 終了後は、Pub/Sub をデバイスの入口に据えるのが標準的な取り込みパターンです。

  • デバイス台数や送信頻度が読めず、バックエンドが詰まる → サブスクリプションがバッファして処理側のペースで捌く
  • 一斉に起動した端末からの バースト送信 を取りこぼさず受け止めたい
  • 1 件のテレメトリを リアルタイム分析・長期保存・アラート など複数系統へ同報したい
  • デバイスは MQTT や HTTP しか話せない → プロトコルブリッジで Pub/Sub に橋渡しする
  • リージョンをまたぐ広域デバイス群でも 同一エンドポイント で受けたい(グローバルサービス)

主要概念と用語

  • テレメトリ(Telemetry): デバイスが定期送信するセンサー値や状態などの計測データ
  • 取り込み(Ingestion): デバイスからのデータをクラウド側の入口で受け止める工程。ここを Pub/Sub が担う
  • トピック(Topic): テレメトリの発行先。デバイス種別や用途ごとに分けることが多い
  • サブスクリプション(Subscription): トピックに紐づく受け取り口。1 トピックに複数付けるとファンアウトになり、分析・保存・通知へ同報できる
  • プロトコルブリッジ(Protocol bridge): MQTT や HTTP で送るデバイスと Pub/Sub の間を仲介する層。パートナー製 IoT プラットフォームや自前のゲートウェイで構成する
  • デバイス認証: 端末ごとの資格情報(証明書やトークン)で送信元を識別する仕組み。Pub/Sub 手前のブリッジ層で行うのが一般的
  • 確認応答(ack)と ackDeadline: 取得したメッセージを処理し終えたら ack。期限内に ack しないと 再配信 される
  • デッドレタートピック(Dead-letter topic): 規定回数失敗したメッセージの退避先
  • Pub/Sub サブスクリプション直送: サブスクライバーのコードを書かずに、BigQuery / Cloud Storage へメッセージを直接取り込む形式

仕様・制限・クォータ

  • 少なくとも 1 回(at-least-once)配信 が基本。まれに重複 するため処理は 冪等 に作る
  • メッセージ本文は大きめ(数 MB 規模)まで扱えるが、テレメトリは小さく頻度の高いものが中心
  • ack 前メッセージには保持期間があり、サブスクライバー停止中も一定期間バッファされる
  • ackDeadline の範囲内で ack できなければ再配信される(リース延長も可能)
  • グローバルサービス: トピック/サブスクリプションは単一エンドポイントを持ち、配信はメッセージストレージポリシーに従う
  • 1 トピックに 多数のサブスクリプション を付けてファンアウトできる
  • 属性(attribute) にデバイス ID やリージョンなどのメタデータを載せ、後段のルーティングに使える
IoT Core は終了している

GCP の旧 Cloud IoT Core はすでに提供を終了しています。現在のデバイス取り込みは、MQTT/HTTP ブリッジやパートナー製 IoT プラットフォームを介して Pub/Sub に直結 する構成が標準です。デバイスレジストリや MQTT ブローカの機能は Pub/Sub 単体には含まれないため、ブリッジ層の設計が前提になります。

内部の仕組み

デバイスはまず MQTT/HTTP ブリッジ層で認証され、テレメトリがブリッジ経由で Pub/Sub トピックへ発行されます。発行されたメッセージは 分散ストレージへ複数コピーで永続化 され、その時点で各サブスクリプションのキューへ振り分けられます。後段のサブスクライバーは Pull で取得するか、Push で受信します。

  • 処理に成功して ack すると、そのサブスクリプションからメッセージが削除される
  • ackDeadline 内に ack できなければ 再配信(少なくとも 1 回配信。冪等処理が前提)
  • 規定回数失敗すると デッドレタートピック へ退避される
  • BigQuery / Cloud Storage サブスクリプションを使うと、サブスクライバーのコードなしで取り込み先へ直送される
二重処理に備える

Pub/Sub は基本「少なくとも 1 回」配信なので、同じテレメトリが まれに重複 します。 デバイス ID とタイムスタンプなどで一意化し、処理を 冪等 に作るのが鉄則です。

設計パターン / ベストプラクティス

  • ブリッジ → Pub/Sub → 分岐: ブリッジで受けたテレメトリを 1 トピックに集約し、複数サブスクリプションで分析・保存・通知へファンアウト
  • ストリーミング処理: リアルタイム集計や異常検知は Dataflow(Apache Beam) を Pub/Sub の後段に置く
  • 長期保存: 生データは Cloud Storage サブスクリプション、構造化分析は BigQuery サブスクリプション で直送し、中継 ETL を省く
  • コマンド送信(下り): デバイスへの制御指示は、別トピック経由でゲートウェイへ配り、ブリッジから端末へ届ける
  • 属性でルーティング: デバイス種別やリージョンを属性に載せ、後段で振り分ける
  • デッドレタートピックで取り込み失敗を退避し、形式不正や権限エラーを調査・再投入

運用・監視

  • Cloud Monitoring のメトリクスで滞留を監視:
    • 未配信メッセージ数(バックログの増加はサブスクライバー不足やダウンストリーム障害の兆候)
    • 最古の未 ack メッセージの経過時間(処理遅延の指標)
  • バックログ急増 → サブスクライバー不足ダウンストリーム障害ack 失敗を疑う
  • デッドレタートピックに溜まる → メッセージ形式 / 権限(IAM)/ 処理ロジック を確認
  • デバイス側の 送信成功率やブリッジの可用性 も併せて監視し、入口での取りこぼしを防ぐ
  • シーク(Seek) で過去へ巻き戻し、バグ修正後のリプレイや再取り込みが可能

コスト

課金はおもに メッセージのスループット量(取り込み・配信・保持のデータ量) に対して発生します。IoT では小さなメッセージが高頻度で届くため、最小課金メッセージサイズの考え方と総件数が効いてきます。

コスト要素課金の考え方節約のポイント
テレメトリ取り込み転送データ量で課金送信頻度を最適化しバッチ化を検討
ファンアウトサブスクリプションごとに配信量が加算本当に必要な購読者だけ接続する
メッセージ保持保持データ量と期間で課金必要な保持期間に絞る
BigQuery/GCS 直送Pub/Sub 配信料と取り込み先の料金中継 ETL を省き運用コストも削減
ブリッジ層ゲートウェイやパートナー基盤の費用デバイス規模に合う方式を選ぶ

セキュリティ

  • デバイス認証はブリッジ層で: 端末ごとの証明書やトークンで送信元を識別し、Pub/Sub には認証済みの経路だけ発行させる
  • IAM でトピック/サブスクリプション単位の権限を最小化(発行はブリッジ、購読は後段サービスに限定)
  • ブリッジや後段サービスには サービスアカウント を使い、鍵のハードコードを避ける
  • 転送中は TLS、保存時は Google 管理鍵で既定暗号化。要件次第で CMEK(Cloud KMS の顧客管理鍵) を指定
  • VPC Service Controls で境界を作り、データの持ち出しを防止
アンチパターン

すべてのデバイスに 同一の資格情報 を配って Pub/Sub へ直接発行させるのは NG。 1 台漏えいすると全体が偽データを送れてしまいます。デバイスごとの認証情報をブリッジ層で検証し、Pub/Sub への発行権限はその経路だけに絞ってください。

関連サービス・比較

IoT 取り込みでは、流量が読めるなら事前確保型の Pub/Sub Lite が候補になります。自動スケールやグローバル配信が要るなら通常の Pub/Sub を選びます。

観点Pub/Sub(取り込み)Pub/Sub Lite
キャパシティ自動スケール事前にパーティションを確保
課金従量課金確保したキャパシティに支払い
スコープグローバルゾーン/リージョン
向くワークロード流量が読めない/急増する流量がおおむね読める
後段直送BigQuery/GCS 直送あり通常はサブスクライバー実装
使い分けのまとめ

デバイス台数や送信頻度が変動するなら、自動スケールする通常の Pub/Sub を入口にします。 流量が安定していてコストを固定したいなら Pub/Sub Lite が選択肢になります。

ハンズオン / CLI例

# テレメトリ用トピックを作成
gcloud pubsub topics create device-telemetry

# 分析用サブスクリプション(Pull、ack 期限とデッドレターを設定)
gcloud pubsub subscriptions create telemetry-analytics \
  --topic=device-telemetry \
  --ack-deadline=30 \
  --dead-letter-topic=telemetry-dlq \
  --max-delivery-attempts=5

# 長期保存はもう 1 本サブスクリプションを生やしてファンアウト
gcloud pubsub subscriptions create telemetry-archive --topic=device-telemetry

# デバイスからの 1 件を擬似的に発行(属性にデバイス ID を付与)
gcloud pubsub topics publish device-telemetry \
  --message='{"temp":24.5}' \
  --attribute=device_id=sensor-001,region=asia

# 取り込んだメッセージを取得して即 ack(確認)
gcloud pubsub subscriptions pull telemetry-analytics --auto-ack --limit=10

Google Cloud Service

Pub/Sub for IoT Ingestionを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

IoT

比較で見る軸

クラウド: Google Cloud / カテゴリ: IoT / 難易度: intermediate

導入後に効く点

デバイス急増やバースト送信もサブスクリプションがバッファし、処理側のペースで捌く。

先に潰すリスク

サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。

数字・仕様の読み方
クラウド
Google Cloud
カテゴリ
IoT
難易度
intermediate
関連資格
設計柱
reliability / performance / operational / security

判断チェックリスト

  • 自社の用途が「IoT / reliability」に近いか確認する。
  • 強みである「多数のデバイスからのテレメトリを Pub/Sub で一括受信し、後段へ疎結合に渡す入口。」が本当に評価軸になるか確認する。
  • 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

IoTreliabilityperformanceoperationalsecurity