Cloud Cost Sense
Google Cloud Pub/Sub の費用:throughput、保持、リージョン転送
Publish・delivery byte、subscription 数、request batching、message retention、リージョン間 data transfer から Pub/Sub の費用を見積もります。
Publish と delivery の throughput を分けて計算する
Pub/Sub は topic に publish した byte と各 subscription から delivery した byte に課金します。Encoded message size、attribute、月間 message 数、各 message を受け取る subscription 数を整理してください。一つの stream を三つの subscription に届けると publish 経路は一つ、delivery 経路は三つになるため、topic 数より subscriber fan-out が費用を左右する場合があります。
Pub/Sub は message が小さくても publish、push、pull request ごとに最低 1,000 byte を算定します。Latency 要件が許せば小さな message を batch し、payload だけでなく attribute も含めます。変わり得る単価を固定せず、公式の最新料金ページで rate と無料枠を確認してください。
Backlog、replay、retention storage を加える
Subscriber が通常 message を acknowledge する時間と、障害中の最大 backlog を見積もります。Topic retention、acknowledge 済み message の保持、snapshot、含まれる期間を超えた未確認 message には storage 料金が発生し得ます。Retention の設定期間そのものを平均保存量とせず、backlog と保持パターンから byte-hour を計算します。
Topic retention は接続されたすべての subscription の replay に使えますが、subscription ごとに acknowledge 済み message を保持すると保存が重複します。必要な recovery point だけを選び、古い snapshot を削除し、最も古い未確認 message の age を監視してください。Redelivery は処理も繰り返すため、consumer を idempotent にして acknowledgement を調整します。
リージョン、filter、downstream 費用をモデル化する
Publisher、message の保存場所、subscriber の region を記録します。Message が region 境界を越えるたびに data transfer 料金が発生する場合があり、複数の遠隔 subscriber への delivery は経路ごとに課金されます。信頼性と data residency が許せば producer と consumer を互換性のある場所に置き、message storage policy を確認してください。
Filter で除外された message にも throughput 料金がかかるため、広い stream を filter の多い subscription に送るより upstream routing が安い場合があります。Subscriber compute、logging、retry、dead-letter 処理、BigQuery や Cloud Storage など destination の費用も加えます。通常、fan-out 増加、consumer 遅延のケースを比較してください。