最終更新: 2026年8月29日
GCPコスト最適化とは、Committed Use Discounts(CUDs)、Spot VM、BigQuery Editions、Cloud Storage Autoclass、Active Assistレコメンダーを組み合わせて、Google Cloudの請求書を最大70%削減するFinOpsの実践フレームワークだ。正直な話、私が過去2年で担当した8つのGCPアカウント(月額$40Kから$1.8M規模)で共通していたのは、Flex CUDsを未購入、Spot移行対象のバッチワークロードがオンデマンド、BigQueryは全プロジェクトがオンデマンドクエリ課金という3点セットの浪費だった。本稿ではその3点を含む10の削減レバーを、gcloudコマンドと実測値付きで解説していく。
Flex CUDs(Compute Engine Flexible Committed Use Discounts)は3年契約で最大46%オフ、リージョン・マシンファミリー横断で柔軟に適用される。
Spot VMは標準VM比で60〜91%割引。中断耐性のあるバッチ、CI/CD、レンダリング、Dataflow、GKEノードプールで即戦力。
BigQuery Editionsに移行し、Standardエディションのオートスケーリング+1年コミットメントで、オンデマンド課金比40〜50%削減が現実的。
Cloud Storage Autoclassは1オブジェクト月$0.0025のオーバーヘッドで、Standard→Nearline→Coldline→Archive遷移を自動化する。
Active Assistの「アイドルVM」「オーバープロビジョニング」レコメンデーションだけで、平均12〜18%のインスタンス費用が消える。
Cloud Interconnect、Private Service Connect、Cloud CDN、同一リージョン設計で下り(Egress)料金は半減する。
目次
なぜGCPの請求書は膨らむのか
Committed Use Discounts:Flex CUDsとResource-based CUDsの選び方
Spot VMで最大91%削減する実装パターン
BigQuery Editions移行でクエリ費用を40%以上削る
Cloud Storage AutoclassとストレージクラスTCO
ネットワーク下り料金(Egress)を半減させる設計
Active Assistレコメンダー:AIによる自動ライトサイジング
GKE AutopilotとCluster Autoscaler
Cloud Billing予算・アラート・異常検知の設定
よくある質問
なぜGCPの請求書は膨らむのか
私が最初に監査に入るとき、真っ先に確認するのはBilling Reports → 「割引タイプ別」ビュー だ。ここで「オンデマンド」の比率が80%を超えていたら、CUDs購入の余地がまだ数百万円分は眠っていると考えていい。GCPの主要な浪費パターンは驚くほど定型的で、次の6つに集約される。
SUD(Sustained Use Discounts)だけに頼っている :SUDは自動適用されるが最大30%止まり。CUDsを組み合わせないと本来の割引ポテンシャルを取り逃す。
N1やN2の旧世代マシンを使い続けている :T2D(AMD EPYC Milan)、C3、C3D、E2は同性能で20〜40%安い。マシンファミリーの切替だけで請求書が痩せる。
Persistent Disk pd-ssdをデフォルトで使う :pd-balancedはpd-ssdの約6割の価格で、IOPS要件を満たすワークロードが大半。
BigQueryオンデマンドで巨大クエリを回している :TB単位のクエリを月次で走らせているのにEditionsに移行していないケース。
Cloud Storageのライフサイクルルール未設定 :数年前のログがStandardクラスのまま眠っている。
マルチリージョン間の下り転送 :us-central1のGKEからus-east1のCloud SQLへ大量ジョインをかけて、Egressで月$8K発生していた事例もある(お客様の顔色が変わる金額だ)。
これらのパターンはGoogle Cloud Architecture Framework のコスト最適化ピラー にも列挙されているが、公式ドキュメントは「原則」レベルで止まる。以下では、gcloudコマンドと実測パーセンテージまで踏み込んで、それぞれの削減レバーを解説していく。同様のフレームワークをAWSで実践したい方は、AWSコスト最適化 完全ガイド2026 を参照してほしい。
Committed Use Discounts:Flex CUDsとResource-based CUDsの選び方
CUDsはGCPコスト削減の主砲だ。2026年時点で、Compute Engineには2種類のCUDsが存在する。Resource-based CUDs はマシンタイプ×リージョンに固定され、1年で最大37%、3年で最大55%オフ。Flex CUDs(Flexible CUDs) は「時間あたりの支出額」にコミットし、マシンファミリー・リージョン横断で柔軟に適用され、1年28%、3年46%オフになる。
どちらを買うべきか:私の判断基準
安定したベースラインが常時同じマシンタイプで動いているワークロード(例:本番APIサーバー、常時起動のCloud SQL)は、割引率の高いResource-based CUDsが向いている。一方、リージョンをまたぐHAデプロイ、マシンファミリーを頻繁に切り替えるCI/CDやデータ処理には、Flex CUDsのほうがミスマッチリスクが低い。私は原則としてベースラインの60〜70%をFlex CUDs、残りをオンデマンドまたはSpotで賄う 設計にしている。過去に「安全策」と称して90%コミットしたら、翌四半期の減産で使い切れず、逆に損したことがある。反省。
gcloudでFlex CUDを購入する
gcloud compute commitments create flex-cud-prod-2026 \
--region=asia-northeast1 \
--plan=twelve-month \
--type=general-purpose \
--resources=type=vcpu,amount=200 \
--resources=type=memory,amount=800 \
--auto-renew
# 3年のFlex CUD(46%オフ):本番の安定分に推奨
gcloud compute commitments create flex-cud-prod-3yr \
--region=asia-northeast1 \
--plan=thirty-six-month \
--type=general-purpose \
--resources=type=vcpu,amount=150 \
--resources=type=memory,amount=600
警告: CUDsは中途解約不可、返金不可。購入前に必ずCommitted Use Discount Analysis レポート でrecommendationsを確認し、直近90日の使用量の80パーセンタイルを上限として買う。100%コミットすると、閑散期に「使わないコミットメント」で損する。
Cloud SQL・Cloud Spanner・Cloud Run向けのCUDs
2026年時点で、Cloud SQL、Cloud Spanner、Cloud Run(vCPU/Memory)、Memorystore(Redis Enterprise含む)、AlloyDB、VMware Engineにも独立したCUDsが用意されている。特にCloud SQL for PostgreSQLはenterprise plus editionと3年CUDを組み合わせると、標準edition+オンデマンド比で55%以上安くなる。マネージドDBは往々にして請求書の20〜30%を占めるので、ここを取り逃すと最適化の効果が半減する。
Spot VMで最大91%削減する実装パターン
Spot VMは2022年にPreemptible VMの後継として登場し、24時間制限が撤廃され、価格も動的化された。マシンタイプとリージョンによって60〜91%割引 で、私がus-central1のC3D-standard-16で計測した割引率は平均79%だった。中断は30秒前のシャットダウンシグナルで通知されるので、実装側でGracefulな終了処理を書いておけばよい。
Spot VMが向くワークロード
Dataflow / Dataproc のバッチジョブ(Sparkは中断されても再スケジュールされる)
GKE nodepool のワーカーノード(後述のtaint/toleration設計を組み合わせる)
Cloud Buildや自前のGitHub Actionsセルフホストランナー
動画エンコード、ML推論のオフラインバッチ、レンダリングファーム
Chaos EngineeringやE2Eテスト用の使い捨て環境
GKEでSpotノードプールを混在させる
gcloud container node-pools create spot-pool \
--cluster=prod-cluster \
--region=asia-northeast1 \
--spot \
--machine-type=c3d-standard-8 \
--num-nodes=3 \
--enable-autoscaling --min-nodes=0 --max-nodes=50 \
--node-taints=cloud.google.com/gke-spot=true:NoSchedule \
--node-labels=workload-class=interruptible
そしてDeployment側で明示的にtolerationとnodeSelectorを指定する。
apiVersion: apps/v1
kind: Deployment
metadata:
name: batch-worker
spec:
replicas: 20
template:
spec:
tolerations:
- key: cloud.google.com/gke-spot
operator: Equal
value: "true"
effect: NoSchedule
nodeSelector:
workload-class: interruptible
terminationGracePeriodSeconds: 25 # Spotの30秒シャットダウンより短く
containers:
- name: worker
image: gcr.io/my-project/batch-worker:v42
Tip: Spotノードプールでも、on-demandプールとの比率を70:30程度 に保つと、中断が集中してもレイテンシSLOを維持しやすい。Kubernetes環境で同様の設計を突き詰めたい方は、Kubernetesコスト最適化 実践ガイド2026 のKarpenter活用パターンを参照してほしい。
BigQuery Editions移行でクエリ費用を40%以上削る
2023年6月にリリースされたBigQuery Editionsは、2026年までにオンデマンド課金の対抗馬として完全に定着した。Standard / Enterprise / Enterprise Plus の3階層があり、スロットベースの課金にオートスケーリング+コミットメント割引を組み合わせる。私が担当した広告テック企業(月次BigQuery費用$62K)では、Enterpriseエディションへの切替+100スロットの1年コミットで月$24Kまで下がった(約61%減)。CFOに報告した瞬間の空気は、今も忘れない。
特徴 オンデマンド Standard Enterprise Enterprise Plus
課金モデル スキャン量($6.25/TB) スロット時間 スロット時間 スロット時間
マテリアライズドビュー × × ○ ○
BigQuery ML ○ × ○ ○
CMEK / VPC-SC △ × ○ ○
クロスリージョンレプリカ × × × ○
1年コミット割引 - -20% -20% -20%
3年コミット割引 - -40% -40% -40%
移行前に必ずやること
INFORMATION_SCHEMA.JOBS_BY_PROJECT で直近30日のスロット消費を集計し、必要スロット数のP95を見積もる。
Baseline slots(コミットメント)+Autoscale slots(オンデマンド)の組み合わせで、Baselineを消費の60〜70パーセンタイルに設定する。
マテリアライズドビューでheavyなJOIN・GROUP BYを事前計算し、Enterpriseの真価を引き出す。
-- 直近30日のスロット消費(時間帯別のピークを掴む)
SELECT
TIMESTAMP_TRUNC(creation_time, HOUR) AS hour,
SUM(total_slot_ms) / (1000 * 3600) AS slot_hours_avg
FROM `region-asia-northeast1`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
WHERE creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)
AND job_type = 'QUERY'
GROUP BY hour
ORDER BY slot_hours_avg DESC
LIMIT 100;
詳細な要件比較はBigQuery Editionsの公式ドキュメント にまとまっている。特にBI EngineやData Governance機能が必要ならEnterprise Plusに寄せる意味がある。
Cloud Storage AutoclassとストレージクラスTCO
Cloud Storageのストレージクラスは Standard / Nearline / Coldline / Archive の4層で、価格差は最大22倍(Standard $0.020/GB/月 vs Archive $0.0012/GB/月、us-central1)。Autoclass は各オブジェクトのアクセスパターンを監視し、30日/90日/365日のしきい値で自動的に下位クラスへ落とす仕組みだ。オブジェクトあたり月$0.0025のオーバーヘッドを許容できるなら、ライフサイクルルールを手書きするより運用が楽になる。
# 既存バケットでAutoclassを有効化(Archiveまで到達させる)
gcloud storage buckets update gs://my-data-lake \
--autoclass-terminal-storage-class=ARCHIVE
# ライフサイクルルール併用パターン:410日以上のオブジェクトを削除
cat > lifecycle.json <<EOF
{
"lifecycle": {
"rule": [
{"action": {"type": "Delete"},
"condition": {"age": 410, "matchesPrefix": ["logs/"]}}
]
}
}
EOF
gcloud storage buckets update gs://my-data-lake --lifecycle-file=lifecycle.json
注: Autoclassの月$0.0025/オブジェクトは、1オブジェクト平均10MB未満の小さなファイル群だと割高になる。ログや解析用の小オブジェクトが多いバケットは、素直にライフサイクルルールで一括Coldline遷移させたほうがTCOは低い。
ネットワーク下り料金(Egress)を半減させる設計
クラウド請求書で最も見落とされがちなのが下り(Egress)料金だ。GCPの標準下り料金はインターネット向けで$0.12/GB(北米、月100TBまで)、大陸間で$0.05〜$0.19/GB。私が診断した中規模SaaSでは、Egressだけで月間$18Kが飛んでいて、以下の5つを適用したら$7Kまで下がった。
Cloud CDNを有効化 :静的アセットは初回だけEgress、以降はキャッシュヒットで無料転送。
同一リージョン内通信を徹底 :GKE、Cloud SQL、Cloud Storage を同じリージョンに揃える。同一ゾーン内は無料、同一リージョン別ゾーン間は$0.01/GB。
Private Service Connect / Private Google Access :VPC内からGoogle API・BigQueryへの通信を内部化。
Cloud Interconnect / Direct Peering :オンプレとの大量転送があるならDedicated Interconnectで$0.02/GB以下に。
Premium Tier→Standard Tierの検討 :ユーザーが単一大陸に集中しているサービスならStandard Networking Tierで20〜30%節約。
下り料金の詳細な体系はVPCネットワーク料金の公式ページ を確認しよう。マルチクラウド環境で下り料金を統合管理したい方は、Azureコスト最適化 完全ガイド2026 のネットワーク設計セクションも参考になる。
Active Assistレコメンダー:AIによる自動ライトサイジング
Active Assistは、GCPが提供するAIベースのレコメンダー群だ。Recommender API を叩けば、アイドルVM、オーバープロビジョニングされたVM、未使用のPersistent Disk、放置されたStatic IP、非効率なIAMロールなどが構造化データで取れる。私は毎週月曜に以下のスクリプトをCloud Schedulerで走らせ、Slackへ集約している。
# アイドルVMのレコメンデーションを一覧化(全プロジェクト・全リージョン)
for project in $(gcloud projects list --format="value(projectId)"); do
for region in asia-northeast1 us-central1 europe-west1; do
gcloud recommender recommendations list \
--project=$project \
--location=$region \
--recommender=google.compute.instance.IdleResourceRecommender \
--format="table(name.basename(), primaryImpact.costProjection.cost.units, description)"
done
done
# オーバープロビジョニングVMのレコメンデーション(Rightsizing)
gcloud recommender recommendations list \
--project=my-prod \
--location=asia-northeast1 \
--recommender=google.compute.instance.MachineTypeRecommender \
--format=json | jq '.[] | {name: .name, savings: .primaryImpact.costProjection.cost.units}'
私の経験則では、Active Assistの推奨をそのまま適用するだけでCompute Engine費用の12〜18%が消える 。ただし本番のミッションクリティカルVMは、レコメンデーションが「7日間の観測ベース」なので、月次バッチのピークを見落とすことがある。適用前に必ずCloud Monitoringのカスタムメトリクスで28日分の負荷を確認する。ここでケチると、翌月にオンコール担当が呼び出される。
GKE AutopilotとCluster Autoscaler
GKEには「Standard」と「Autopilot」の2モードがある。Autopilot はノードのプロビジョニング、Bin-packing、ノードプールのスケーリングを完全にGoogleが管理し、Pod単位のvCPU・Memory・エフェメラルストレージで課金される。ノードが常にBin-packingされるため、Standardクラスタで発生しがちな「50%しか使っていないn2-standard-4が20台」といった浪費が起きにくい。
Autopilotが向くケース / 向かないケース
向く :マイクロサービス多数、需要変動が大きい、SREリソースが限られる、ノード運用の学習コストを避けたい。
向かない :GPU/TPUを大量使用、privileged DaemonSetが必要、hostNetworkが必須、Pod単価が高いのでコンピュート密度が非常に高いワークロード(長時間高負荷CPUを100%使い切るような)。
# Autopilotクラスタを作成
gcloud container clusters create-auto prod-autopilot \
--region=asia-northeast1 \
--release-channel=regular
# 既存Standardクラスタで、Cluster AutoscalerとNode Auto-Provisioningを併用
gcloud container clusters update prod-cluster \
--enable-autoprovisioning \
--min-cpu=10 --max-cpu=500 \
--min-memory=40 --max-memory=2000 \
--autoprovisioning-scopes=https://www.googleapis.com/auth/cloud-platform
Cloud Billing予算・アラート・異常検知の設定
削減後のリバウンドを防ぐには、Cloud Billing側で予算・アラート・異常検知 を三段構えで仕込む。私はプロジェクトごとに月次予算を切り、50% / 90% / 100% / 120%のしきい値でPub/Sub → Cloud Functions → Slackに通知している。さらに2024年からGAされたCost Anomaly DetectionをすべてのBillingアカウントで有効化しておくのが、2026年の常識だ。
# 予算作成(gcloud alpha billing budgets)
gcloud billing budgets create \
--billing-account=012345-ABCDEF-678901 \
--display-name="prod-monthly-budget-2026" \
--budget-amount=15000USD \
--threshold-rule=percent=0.5 \
--threshold-rule=percent=0.9 \
--threshold-rule=percent=1.0 \
--threshold-rule=percent=1.2,basis=forecasted-spend \
--filter-projects=projects/my-prod-project \
--notifications-rule-pubsub-topic=projects/my-billing/topics/budget-alerts
異常検知はプロジェクト単位で「日次支出が過去14日平均から3σ以上乖離」した場合に自動アラートが飛ぶ。閾値ベースの予算アラートよりも早く「今日、いきなり請求書が2倍になっている」に気付ける。
Tip: 予算アラートはあくまで「事後」の通知だ。事前 の異常を防ぐには、TerraformなどのIaCコードにOpen Policy Agent (OPA)やCheckovを組み込み、CIで「pd-ssdが3TB超のVMを起動しようとしたら失敗させる」といった予防ガードレールを敷く。私はCloud Buildでterraform plan時にCheckovを走らせ、コスト影響の大きなリソースはPRブロックしている。
よくある質問
GCPコストは実際どれくらい削減できますか?
私の実測ベースでは、未着手のワークロードから始めた場合、6か月で35〜55%、12か月で55〜70%削減が現実的です。CUDs購入 + Spot VM移行 + BigQuery Editions切替の3点セットだけで、平均40%は取れます。
Flex CUDsとResource-based CUDsの違いは何ですか?
Flex CUDsは「時間あたりの支出額」にコミットし、マシンファミリー・リージョン横断で自動適用されます(3年で最大46%オフ)。Resource-based CUDsはマシンタイプ×リージョンに固定される代わりに、割引率が高い(3年で最大55%オフ)です。ベースラインが安定していればResource-based、動的な環境ならFlexを選びます。
Spot VMとPreemptible VMは同じですか?
Spot VMはPreemptible VMの後継です。2022年以降、24時間で強制終了される制約がなくなり、価格も動的に変動するようになりました。API的にはPreemptibleフラグを立てても内部でSpot VMとして扱われますが、新規実装ではSpotフラグを使うべきです。
BigQuery Editionsとオンデマンド、どちらが安いですか?
月間のスキャン量が概ね5TBを超えたら、Standard Editionのオートスケーリング+ベースラインスロットのほうが安くなるケースが多いです。$6.25/TBのオンデマンドはスパイク型の少量クエリには向いていますが、定常的なETLパイプラインではEditions+1年コミットで40〜50%は下がります。
GCPのコスト削減に最も効くツールはどれですか?
単一ツールでの効果順は、(1) Active Assistレコメンダー(無料、即効性)、(2) Cloud Billing Export → BigQuery → Looker Studio(可視化)、(3) Recommender APIをTerraformでプログラマティックに適用する自動化基盤、です。まずレコメンデーションを毎週レビューする運用をルーチン化するのが第一歩です。