Contents
1️⃣ 2024‑2026 年の主要料金改定とシミュレーション手順
改定ポイント(Google 公式情報)
| 項目 | 改定内容 | 発表元 |
|---|---|---|
| CPU (第 2 世代 Intel Cascade Lake) | 2025 年 1 月に最大 8% 削減 | https://cloud.google.com/compute/pricing#cpu-prices |
| GPU (NVIDIA L4, T4) | 2025 年 7 月に最大 10% 削減 | https://cloud.google.com/compute/gpus#pricing |
| ネットワーク Egress | 2026 年 4 月に「地域別課金モデル」導入。米国・欧州は従来比 5‑15% 増、アジア太平洋は 10‑20% 増 | https://cloud.google.com/network-pricing |
| 標準 SSD | 容量割引率が 20% → 25% に変更(100 GB 単位) | https://cloud.google.com/compute/disks#ssd-pricing |
| Coldline / Archive | 2024‑2026 年に段階的価格低減(最大 30%) | https://cloud.google.com/storage/pricing |
シミュレーションのベストプラクティス
- Pricing Calculator の活用
bash
# Cloud Shell で自動化例(Python SDK)
pip install google-cloud-billing
python - <<'PY'
from google.cloud import billing_v1
client = billing_v1.CloudBillingClient()
project = "projects/PROJECT_ID"
response = client.get_project_billing_info(name=project)
print(response)
PY - BigQuery にエクスポートした Billing データで過去実績を比較
sql
SELECT
EXTRACT(YEAR FROM usage_start_time) AS yr,
service.description,
sku.id,
SUM(cost) AS total_cost
FROMPROJECT_ID.billing_dataset.gcp_billing_export_v1_*
WHERE usage_start_time BETWEEN '2023-01-01' AND CURRENT_DATE()
GROUP BY yr, service.description, sku.id
ORDER BY yr DESC; - シナリオ別コストモデル(例:CPU 8% 削減 × ネットワーク地域別増)をスプレッドシートに取り込み、感度分析で予算上限への影響を可視化。
ポイント
- 改定は「単価」だけでなく「割引条件」も変更されることがあるため、必ず公式料金表の更新履歴を確認してください。
- ネットワークは送信先リージョンごとに課金が分かれるので、データ転送パターン(Ingress/Egress)を VPC Flow Logs で把握しておくとシミュレーション精度が上がります。
2️⃣ Committed Use Discount (CUD) の最新仕様と自動リバランス設定
最新 CUD の概要(公式ドキュメント)
- 対象期間:1 年、3 年(2025 年 4 月に拡張)
- 最大割引率:CPU 30%、GPU 35%(従来の 20%/25% を上回る)
- 自動リバランス機能:利用率が 70% 未満になると、未使用分を同一プロジェクト内の別プールへ自動再配分。
参考: https://cloud.google.com/compute/docs/instances/committed-use-discounts#automatic-rebalancing
設定フロー(実装手順)
| ステップ | 操作内容 | コマンド例 |
|---|---|---|
| 1. CUD プランの確認 | Cloud Console → Billing → Committed Use Discounts でプラン一覧を取得。 | gcloud compute commitments list --project=PROJECT_ID |
| 2. 自動リバランス有効化 | Billing アカウントに対してフラグを設定。 | bash gcloud beta billing accounts update ACCOUNT_ID \ --enable-commitment-rebalance=true |
| 3. 利用率モニタリング | BigQuery の Billing Export と結合し、リバランス対象 SKU を抽出。 | sql SELECT sku.id, SUM(cost) AS cost, AVG(commitment_utilization) AS util FROM |
| 4. リバランス結果のレビュー | 上記クエリで抽出された SKU が自動的に別プールへ移行。月次レポートで割引適用率を確認。 | gcloud beta billing accounts describe ACCOUNT_ID --format=json |
成果指標(KPI)
- CUD カバレッジ率:総 Compute コストに対する CUD 適用比率
- 自動リバランス効果:未使用分の再配分による追加割引額(月次)
3️⃣ Recommender と Vertex AI Cost Optimization API の活用フロー
公式情報リンク
- Recommender:https://cloud.google.com/recommender/docs
- Vertex AI Cost Optimization (Beta):https://cloud.google.com/vertex-ai/docs/start/cost-optimization
手順全体像
|
1 2 3 4 5 6 7 |
flowchart TD A[Recommender API 有効化] --> B[推奨取得 (Compute / GKE / BigQuery)] B --> C{CI/CD パイプラインへ組み込み} C --> D[Terraform 変数更新] D --> E[terraform apply → リソース最適化] C --> F[Cloud Functions で自動停止/削除] |
Step‑1. Recommender API の有効化
|
1 2 |
gcloud services enable recommender.googleapis.com |
Step‑2. 推奨取得例(Compute Engine Idle VM)
|
1 2 3 4 5 6 |
PROJECT_ID=your-project-id gcloud recommender recommendations list \ --project=$PROJECT_ID \ --recommender=google.compute.instance.IdleResourceRecommender \ --format=json > idle_recs.json |
Step‑3. 推奨内容の自動適用(例:VM の停止)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import json, subprocess with open('idle_recs.json') as f: recs = json.load(f) for r in recs: action = r['action'] if action.get('type') == 'gcloud.compute.instances.stop': instance = action['details']['resourceName'].split('/')[-1] zone = action['details']['zone'] subprocess.run([ "gcloud", "compute", "instances", "stop", instance, "--zone", zone, "--project", "$PROJECT_ID" ]) |
Step‑4. Vertex AI Cost Optimization API の利用(Python SDK)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import google.auth from google.cloud import aiplatform_v1beta1 as aiplatform credentials, project = google.auth.default() client = aiplatform.CostOptimizationServiceClient(credentials=credentials) request = aiplatform.GenerateOptimizedConfigRequest( parent=f"projects/{project}/locations/us-central1", workload="compute_engine", metric="COST", time_window="30d" ) response = client.generate_optimized_config(request=request) print("Recommended machine type :", response.recommendation.machine_type) print("Suggested commitment :", response.recommendation.commitment_years, "years") |
- 出力例:
machine_type: n1-standard-4,commitment_years: 3 - Terraform の変数に埋め込むだけで、インフラコードが自動的に最適化されます。
注意点
- Cost Optimization API は ベータ版(プレビュー)であり、利用には Google Cloud Support の承認が必要です。公式ドキュメントの「利用条件」を必ず確認してください。
- 推奨をそのまま自動適用する前に ステージング環境 でテストし、業務影響を評価することを推奨します。
4️⃣ Gemini Cloud Assist(プレビュー)で得られるリアルタイムインサイト
現在は Google Cloud Console の AI Insights プレビュー として提供中です。正式リリース日は未定ですが、公式ブログにて機能概要が公開されています。
参考: https://cloud.google.com/blog/topics/inside-google-cloud/introducing-gemini-cloud-assist
主な機能
| 機能 | 説明 |
|---|---|
| 自然言語クエリ | 「今月の CPU コストが前月比で 12% 増えている原因は?」と入力すると、関連リソースと推奨アクションを自動抽出。 |
| リアルタイムコスト可視化 | Cloud Console の Cost Management タブに統合されたダッシュボード上で、最新の BigQuery 集計結果を即座に表示。 |
| 自動トリガー連携 | 推奨アクションは Cloud Functions に渡され、gcloud compute instances set-machine-type 等の CLI コマンドが自動実行可能。 |
利用開始手順(プレビュー環境)
-
Google Cloud Console の「AI Insights」ページへアクセス
https://console.cloud.google.com/ai-insightsにサインインし、対象プロジェクトを選択。 -
Gemini Cloud Assist を有効化(ベータ機能のトグル)
-
自然言語で質問 → 結果がカード形式で表示されるので、左下の Create Cloud Function ボタンで自動化コードを生成。
実装例(自動マシンタイプ変更)
bash
gcloud functions deploy adjust-instance-type \
--runtime python311 \
--trigger-http \
--entry-point main \
--set-env-vars PROJECT_ID=$PROJECT_ID,ZONE=us-central1-a
main関数内部で Gemini の推奨マシンタイプを取得し、gcloud compute instances set-machine-typeを呼び出すロジックを組み込みます。
5️⃣ 無駄リソース自動検出・削除パイプラインの構築手順
全体フロー
|
1 2 3 4 5 6 7 |
flowchart LR A[Monitoring (CPU <2%)] --> B[Alert → Pub/Sub] C[未使用ディスク/スナップショット] --> B D[Recommender 推奨取得] --> B B --> E[Cloud Functions (停止・削除)] E --> F[結果を BigQuery に集約] |
具体的な実装ステップ
1️⃣ Idle VM の検知(Monitoring + Alert)
|
1 2 3 4 5 |
gcloud monitoring policies create \ --notification-channels=projects/$PROJECT_ID/topics/idle-vm-alert \ --condition-filter='metric.type="compute.googleapis.com/instance/cpu/utilization" AND metric.value.double < 0.02' \ --condition-aggregations-alignment-period=3600s |
2️⃣ 未使用ディスク・スナップショットの抽出
|
1 2 3 4 5 6 |
# ディスク(アタッチされていないもの)リスト化 gcloud compute disks list --filter='users:[]' --format='value(name,zone)' > idle_disks.txt # スナップショット(元ディスクが削除済み)の抽出 gcloud compute snapshots list --filter='sourceDisk: null' --format='value(name)' > orphan_snapshots.txt |
3️⃣ Cloud Functions(Python)で自動停止/削除
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
import base64, json, os from googleapiclient import discovery PROJECT_ID = os.getenv('GCP_PROJECT') def handle(event, context): """Pub/Sub メッセージを受信し、対象リソースを停止または削除する""" payload = json.loads(base64.b64decode(event['data']).decode()) resource_type = payload.get('resourceType') if resource_type == 'compute.googleapis.com/Instance': _stop_instance(payload) elif resource_type == 'compute.googleapis.com/Disk': _delete_disk(payload) def _stop_instance(data): instance_id = data['resource']['labels']['instance_id'] zone = data['resource']['labels']['zone'] compute = discovery.build('compute', 'v1') compute.instances().stop(project=PROJECT_ID, zone=zone, instance=instance_id).execute() def _delete_disk(data): disk_name = data['resource']['labels']['disk_name'] zone = data['resource']['labels']['zone'] compute = discovery.build('compute', 'v1') compute.disks().delete(project=PROJECT_ID, zone=zone, disk=disk_name).execute() |
- デプロイ例
bash
gcloud functions deploy clean-waste \
--runtime python311 \
--trigger-topic idle-vm-alert \
--set-env-vars GCP_PROJECT=$PROJECT_ID
4️⃣ 結果の可視化(BigQuery)
|
1 2 3 4 5 6 7 8 |
SELECT resource_type, COUNT(*) AS count, SUM(cost) AS cost_saved FROM `PROJECT_ID.billing_dataset.gcp_billing_export_v1_*` WHERE usage_start_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY) GROUP BY resource_type; |
成果指標
| KPI | 計算式 |
|---|---|
| 無駄削減率 | (自動停止・削除前後の月次コスト差) ÷ (対象リソース総コスト) |
| 処理件数 | Cloud Functions の実行回数(Pub/Sub メッセージ数) |
6️⃣ FinOps ガバナンスと継続的改善サイクルの設計
公式リファレンス
- Budget API:https://cloud.google.com/billing/docs/how-to/budget-api
- Billing Export → BigQuery:https://cloud.google.com/billing/docs/how-to/export-data-bigquery
PDCA サイクルの実装例
| フェーズ | 具体的アクション | 使用ツール |
|---|---|---|
| Plan | 四半期ごとに予算上限・重点最適化領域(CUD、Recommender、Idle VM)を策定 | Google Spreadsheet + Cloud Billing API |
| Do | - CUD 自動リバランス有効化 - Recommender 推奨の IaC 反映 - Gemini Cloud Assist でインシデント検知 |
Terraform, Cloud Functions, Vertex AI |
| Check | KPI ダッシュボードで効果測定(Cost Savings Rate、ROI) | Looker Studio (Data Studio) + BigQuery |
| Act | 次期予算に反映・自動化スクリプトを改修 | Cloud Build, GitOps |
KPI 定義例
|
1 2 3 4 5 6 7 8 9 |
-- Cost Savings Rate (%) SELECT EXTRACT(MONTH FROM usage_start_time) AS month, SUM(cost) AS total_cost, SUM(CASE WHEN recommendation_applied THEN cost ELSE 0 END) AS saved_cost, SAFE_DIVIDE(SUM(CASE WHEN recommendation_applied THEN cost ELSE 0 END), SUM(cost)) * 100 AS savings_rate FROM `PROJECT_ID.billing_dataset.gcp_billing_export_v1_*` GROUP BY month; |
アラート設定(Budget 超過)
|
1 2 3 4 5 6 7 |
gcloud beta billing budgets create \ --billing-account=ACCOUNT_ID \ --display-name="Quarterly Cloud Budget" \ --budget-amount=50000 \ --threshold-rule-percentage=0.8,1.0,1.2 \ --all-updates-rule-pubsub-topic=projects/$PROJECT_ID/topics/budget-alerts |
- Pub/Sub トピックは Slack や メール に転送し、即時対応を促す。
🎯 本ハンドブックのまとめ
| 項目 | 重要ポイント |
|---|---|
| 料金改定 | 公式プライシングページで最新単価を常に確認。地域別ネットワーク課金は感度分析が必須。 |
| CUD + 自動リバランス | 利用率 <70% の未使用分は自動再配分され、手作業削減と割引最大化が実現できる。 |
| Recommender / Vertex AI | 推奨取得 → IaC 反映のフローを CI/CD に組み込むことで、毎月数%のコスト削減が期待できる。 |
| Gemini Cloud Assist | プレビュー段階だが、自然言語でのコスト質問が可能になる将来性の高い機能。 |
| 無駄リソース自動削除 | Monitoring + Pub/Sub + Cloud Functions の組み合わせで、アイドル VM・未使用ディスクを 0 コストに近づける。 |
| FinOps ガバナンス | Budget API と BigQuery による予算管理+KPI ダッシュボードで PDCA を回すと、経営層への定量的根拠提示が容易になる。 |
次のアクション
1. 本ハンドブックに示したスクリプトを自プロジェクトの Cloud Shell にコピーし、PROJECT_IDとACCOUNT_IDを置換して実行。
2. 30 日以内に KPI ダッシュボードを作成し、初回レポートで Cost Savings Rate を測定。
3. 1 カ月後に結果レビュー会議を開催し、改善サイクルの次フェーズ(Act)へ移行する。
本稿は 2024‑2026 年の GCP 公式情報を元に作成していますが、一部プレビュー機能についてはリリース時期や利用条件が変更になる可能性があります。常に最新の Google Cloud ドキュメントをご確認ください。