問題
あなたのチームが運用しているECサイトのデータパイプラインは、毎日 Argo Workflows で BigQuery にデータをロードしています。 最近のコスト見直しで、以下のことが分かりました。
現状(月次)
| 項目 | 値 |
|---|---|
| BigQuery ストレージ | 約 15TB(アクティブ + 長期混在) |
| BigQuery クエリスキャン | 月計 約 800TB(オンデマンドプラン) |
| Cloud Run ジョブ | vCPU 2、メモリ 4GB × 日次 3時間 × 30日 |
| BQ オンデマンド単価 | $6.25 / TB |
タスク
- 現状の月次コストを概算する(BigQuery クエリ + Cloud Run)
- コスト削減の選択肢を3つ以上挙げ、削減見込み額と実装コストを評価する
- 20%削減目標を達成するための優先順位付き実装ロードマップを提案する
GCP 参考単価(2026年時点)
| リソース | 単価 |
|---|---|
| BigQuery オンデマンド | $6.25/TB |
| BigQuery ストレージ(アクティブ) | $0.02/GB/月 |
| BigQuery ストレージ(長期: 90日以上) | $0.01/GB/月 |
| Cloud Run(vCPU) | $0.00002400 / vCPU秒 |
| Cloud Run(メモリ) | $0.00000250 / GB秒 |
| BigQuery Reservations(100スロット) | ~$2,000/月 |
期待する回答形式: 数値計算 + 文章(施策比較表 + ロードマップ)
制約: 削減施策は本番データの品質・鮮度に影響を与えないこと。工数は S/M/L で評価。施策のリスクも記載。
制約: 削減施策は本番データの品質・鮮度に影響を与えないこと。工数は S/M/L で評価。施策のリスクも記載。
ヒント(段階的開示)
ヒント1 — 方向性
まず現状コストを「BigQueryクエリ費用」と「Cloud Run費用」に分けて計算する。
次に「削減インパクト大 × 実装コスト小」の順に施策を並べると優先順位が出る。
ヒント2 — 計算式の骨格
BigQueryクエリコスト:
月次スキャン量(TB) × 単価($/TB) = 月次クエリコスト($)
800TB × $6.25 = ?
Cloud Runコスト(ジョブ):
vCPU秒数 = 2 × (3h × 3600) × 30 = ?
メモリGB秒 = 4 × (3h × 3600) × 30 = ?
コスト = vCPU秒 × $0.000024 + メモリGB秒 × $0.0000025
削減施策の候補: Partitioned Table + Partition Pruning / Materialized Views / Reservations移行 / 長期ストレージ化 / Cloud Run cpu-throttling 最適化
ヒント3 — 計算の答え合わせ
BigQuery クエリ: 800 × $6.25 = $5,000/月
Cloud Run vCPU: 2 × 10,800秒 × 30日 × $0.000024 = $15.55
Cloud Run MEM: 4 × 10,800秒 × 30日 × $0.0000025 = $3.24
合計: ≈ $5,019/月
施策比較表の骨格:
| 施策 | 削減額見込み | 削減率 | 工数 | リスク |
|---|---|---|---|---|
| Partition Pruning導入 | ~$1,500 | ~30%クエリ削減 | M | 低 |
| ... | ... | ... | ... | ... |
コスト構造図
模範解答
Step 1: 現状コスト試算
【BigQuery クエリコスト】
800 TB × $6.25/TB = $5,000/月
【Cloud Run ジョブコスト】
実行秒数/日 = 3時間 × 3600秒 = 10,800秒
月次秒数 = 10,800 × 30 = 324,000秒
vCPU コスト = 2 vCPU × 324,000秒 × $0.000024 = $15.55
メモリコスト = 4 GB × 324,000秒 × $0.0000025 = $3.24
Cloud Run合計 = $18.79/月(≒ $19)
【BigQuery ストレージコスト(概算)】
仮定: 15TBのうちアクティブ10TB、長期5TB
アクティブ: 10TB × 1024GB/TB × $0.02 = $204.8
長期: 5TB × 1024GB/TB × $0.01 = $51.2
ストレージ合計 = $256/月
【月次合計】
$5,000 + $19 + $256 ≈ $5,275/月
→ コストの 94.8% が BigQuery クエリ。Cloud Run とストレージは相対的に軽微。
Step 2: 削減施策の評価
| 施策 | 削減額見込み | 削減率 | 工数 | リスク・デメリット |
|---|---|---|---|---|
| Partition Pruning 徹底 | ~$1,500(クエリ量-30%) | 28% | M | WHERE句にパーティション列が必須。既存クエリ修正が必要 |
| Materialized Views 導入 | ~$750(頻繁なクエリをキャッシュ) | 14% | M | MVの更新コストが発生。鮮度要件の確認が必要 |
| BigQuery Reservations 検討 | ~$500相当(800TBなら損益分岐) | 10%相当 | L | 月$2,000固定コスト。スキャン量が安定して多いことが前提 |
| 長期ストレージ化 | ~$100(アクティブ→長期の単価差) | 2% | S | 90日変更なしで自動移行。意図的にテーブル分割が必要な場合も |
| BI Engine 予約 (10GB) | ~$200(高頻度クエリをキャッシュ) | 4% | S | BI Engine対応SQLのみ。複雑なクエリは非対応 |
Step 3: 20%削減ロードマップ
目標: $5,275 × 20% = $1,055削減 → $4,220/月以下
1
Week 1 — 即効性重視
① Partition Pruning 監査(工数: M)
期待削減: $750〜$1,500
② BI Engine 予約(工数: S)
頻繁に実行されるダッシュボードクエリをBI Engineで高速化。期待削減: $200
① Partition Pruning 監査(工数: M)
INFORMATION_SCHEMA.JOBS で全クエリのスキャン量上位30件を特定。パーティション列でフィルタされていないクエリを修正。期待削減: $750〜$1,500
② BI Engine 予約(工数: S)
頻繁に実行されるダッシュボードクエリをBI Engineで高速化。期待削減: $200
2
Week 2〜3 — 中期施策
③ Materialized Views 導入(工数: M)
毎日同じ集計を実行しているクエリをMVに置き換え。鮮度要件を確認して対象を選定。
期待削減: $500〜$750
③ Materialized Views 導入(工数: M)
毎日同じ集計を実行しているクエリをMVに置き換え。鮮度要件を確認して対象を選定。
期待削減: $500〜$750
合計見込み削減: $1,450〜$2,450(約27〜46%削減)
→ Week 1 だけで目標の 20% 削減達成が可能。
→ Week 1 だけで目標の 20% 削減達成が可能。
ポイント解説
1
コストの集中箇所を特定してから施策を考える
今回はBigQueryクエリが94.8%。Cloud Runの最適化は影響が小さい($19/月)。コスト削減は必ず「どこが重いか」を先に数値化する。
今回はBigQueryクエリが94.8%。Cloud Runの最適化は影響が小さい($19/月)。コスト削減は必ず「どこが重いか」を先に数値化する。
2
INFORMATION_SCHEMA.JOBS は必須ツール
BigQueryのコスト最適化の第一歩は
BigQueryのコスト最適化の第一歩は
SELECT * FROM `region-asia-northeast1`.INFORMATION_SCHEMA.JOBS でスキャン量の多いクエリを特定すること。
3
Partition Pruning のROIが最高
工数がMでも削減インパクトが大きい。WHERE句にパーティション列(例:
工数がMでも削減インパクトが大きい。WHERE句にパーティション列(例:
WHERE date = '2026-05-01')を含めるだけでスキャン量を劇的に削減できる。
実務への応用
- チームのコスト可視化: BigQueryの課金アラート(Budgets & Alerts)を設定し、月次コストが閾値を超えたらSlack通知する
- クエリコスト見積もりをCIに組み込む:
bq query --dry_runでPRごとにスキャン量を推定し、10TB超のクエリはレビュー必須とする - dbt モデルへの適用: dbt の
partitioned_by設定でテーブルを自動パーティション化し、Partition Pruningが効く設計にする
次のステップ
発展問題: BigQuery Reservations(スロット予約)の損益分岐点計算。「月次スキャン量が何TB以上になったらフラットレートの方が安くなるか」を試算する。
- 参考: BigQuery公式ドキュメント「Best practices for cost control」
- 参考: Google Cloud Pricing Calculator
今日のまとめ
クラウドコスト削減はまず数値化が先決。BigQueryでは「クエリスキャン量の削減(Partition Pruning・MV)」が最も高いROIを持ち、
Cloud Runのような計算コストは相対的に小さいことを数値で示すことがエンジニアのコスト提案の基本形。