跳至主要內容
ESC
ACE 職涯與認證 — 第 2/5 篇

GCP 成本優化完全指南 2026:帳單分析與省錢技巧

GCP 成本優化完全指南 2026:帳單分析與省錢技巧

TL;DR: 【2026 最新版】學會 GCP 成本優化三大支柱:善用 Gemini AI 輔助的 Billing Reports 分析帳單、掌握 CUD(Committed Use Discount,承諾用量換折扣)與 SUD(Sustained Use Discount,用越多自動折越多)的折扣策略、運用 Spot VM 最高 91% 折扣。手把手帶你從「看不懂帳單」到「精準控管每一塊錢」。

讀這篇前你只要知道:GCP 的 VM(虛擬機)、儲存、網路大概各自在收什麼錢就夠了。文章後段會出現 BigQuery SQL、Cloud Functions、GKE YAML 這些東西,那些屬於「實務加碼」、不是 ACE 必考範圍,看到時不用緊張 — 我會標出來哪些可以先跳過。

為什麼 GCP 成本容易失控?5 個常見陷阱

場景一:開發測試環境忘記關閉 週五下班前你開了 10 台 n1-standard-8 VM 跑壓測,週末忘了關,週一一看已經燒掉 $500 起跳。

場景二:選錯 Storage Class 不常存取的備份檔案丟在 Standard Storage,儲存費每月就多付 5-10 倍。

場景三:跨區域傳輸費爆表 application 在 us-central1,database 卻在 asia-east1,每月跨區傳輸費就佔了帳單的 30%。

場景四:沒善用折扣方案 明明運算需求很穩定,卻一路用 On-Demand 價格,白白錯過 CUD 能省下的 50-70%。

場景五:缺乏成本可見性 帳單按月結算,等你發現成本不對勁,往往已經多花了好幾千美元。

所以重點不是把帳單砍到最低,而是讓每一塊錢都花在刀口上 — 這就是 FinOps(Financial Operations,把財務紀律帶進雲端用量管理)的核心。

GCP 成本結構解析:你的錢花在哪?

四大成本組成

GCP 帳單主要分成四大類:

1. Compute(運算)

  • Compute Engine VM instances
  • GKE clusters
  • Cloud Run containers
  • Cloud Functions executions

成本驅動因素

  • VM 規格(vCPU、RAM、GPU)
  • 運行時數
  • 區域(us-central1 最便宜,asia-northeast1 較貴 10-20%)

2. Storage(儲存)

  • Cloud Storage buckets
  • Persistent Disks
  • Cloud SQL databases
  • Filestore

成本驅動因素

  • Storage Class(Standard / Nearline / Coldline / Archive)
  • 儲存容量(GB/月)
  • 讀寫操作次數

3. Network(網路)

  • VPC 內部流量(免費)
  • 跨區域傳輸(Regional egress)
  • 對外網路(Internet egress)
  • Load Balancer 流量

成本驅動因素

  • 出站流量(Egress,資料從 GCP 往外送)計費,入站(Ingress,資料進來)免費
  • 同區域免費,跨區依距離計費

4. Other Services(其他服務)

  • BigQuery queries
  • Cloud Logging
  • Cloud Monitoring
  • API calls

成本結構範例

典型 web application 成本分布:

項目佔比月費用(假設 $10,000 總預算)
Compute45%$4,500
Storage20%$2,000
Network25%$2,500
Other10%$1,000

⚠️ 警告:Network 佔比超過 30%,通常代表架構出了問題,該回頭檢查是不是太多資源跨區域了。

帳單分析實戰:Billing Reports 完整教學

3.1 四大 Billing Reports 類型

Report 1: Reports Page(基礎報表)

存取路徑

Google Cloud Console → Billing → Reports

可回答的問題

  • 本月支出趨勢如何?
  • 上個月哪個專案花費最多?
  • 哪個 GCP 服務成本最高?

核心功能

  1. 時間範圍選擇

    • 本月迄今(MTD)
    • 上個月
    • 過去 3 個月
    • 自訂日期範圍
  2. 分組維度(Group by)

    • Project(專案)
    • Service(服務,如 Compute Engine、Cloud Storage)
    • SKU(具體資源,如 n1-standard-4)
    • Location(區域)
    • Label(自訂標籤)
  3. 篩選器(Filters)

    • 依專案、服務、標籤篩選
    • 排除特定項目
  4. 圖表類型

    • 堆疊柱狀圖(Stacked bar chart)
    • 堆疊面積圖(Stacked area chart)
    • 折線圖(Line chart)

最佳實踐

日常監控設定:
  - Group by: Service
  - Time range: Last 30 days
  - Chart: Stacked area chart

成本分攤設定:
  - Group by: Label
  - Filter: label.team=backend, label.team=frontend
  - Time range: This month

Report 2: Cost Table Report(成本明細表)

功能:取代傳統發票,把成本拆得很細給你看

包含欄位

  • Project ID / Project Number
  • Service description
  • SKU description
  • Usage amount
  • Cost(含稅前/稅後)
  • Credits(折扣)

使用場景

  • 財務部門對帳
  • 專案成本精算
  • 跨部門費用分攤

下載格式:CSV / PDF

Report 3: Pricing Table Report(SKU 定價表)

功能:查詢所有 SKU 的即時定價

使用時機

  • 估算新專案成本
  • 比較不同區域價格
  • 規劃 resource migration

範例:查詢 n1-standard-4 在不同區域的價格

RegionvCPU/hourRAM GB/hourTotal/month (730h)
us-central1$0.190$0.0255$185.58
asia-east1$0.209$0.0280$204.01
europe-west1$0.209$0.0280$204.01

Report 4: CUD Analysis Reports(CUD 效益分析)

功能:視覺化 Committed Use Discounts 的財務影響

關鍵指標

  • CUD Coverage(涵蓋率):被 CUD 涵蓋的用量百分比
  • CUD Utilization(使用率):已使用的 CUD 承諾百分比
  • Effective Savings(實際節省金額)

最佳實踐

  • Coverage < 70%:考慮購買更多 CUD
  • Utilization < 80%:CUD 購買過多,需調整

3.2 🆕 Gemini Cloud Assist - AI 驅動的成本分析

2024 年下半年起陸續開放 Preview,目前仍是 Pre-GA 階段

Google Cloud 把 Gemini Cloud Assist 整進了 Billing Reports,幫你用 AI 分析成本:

核心能力

  1. 自然語言查詢:用對話方式建立成本報表

    • 「顯示本月 Compute Engine 成本最高的 5 個專案」
    • 「比較上週與本週的 Cloud Storage 費用」
  2. AI 報表摘要:自動分析報表並提供關鍵洞察

    • 識別異常支出模式
    • 建議成本優化機會
  3. 報表建議:推薦適合的報表配置

    • 根據歷史查詢模式
    • 自動篩選相關維度

使用範例

User: "Show me which team spent the most last month"
Gemini: 建立報表 → Group by: Label (team) → Time: Last month
       結果: Backend team $15,000 (↑20% vs prev month)

3.3 🆕 App Hub 整合 - 按應用程式分析成本

2025 年 4 月新增

App Hub 現在也整進了 Billing Reports,FinOps 和 DevOps 團隊可以這樣用:

  • 按應用程式分組成本:在 Reports 中選擇「Group by Application」
  • 應用程式層級篩選:在 Cost Table Report 篩選特定 application
  • 成本優化建議:針對每個 application 提供效率優化建議

使用場景

  • 多個微服務組成的應用程式,追蹤總成本
  • 跨專案的應用程式,統一成本視圖
  • 與 DevOps 工具整合,自動化成本歸因

3.4 🆕 FinOps Hub 2.0 - 雲端浪費偵測

2025 年 4 月 Google Cloud Next 發表

FinOps Hub 2.0 新增 Utilization Insights 儀表板:

功能

  • Idle Resources Detection(閒置資源偵測)

    • CPU < 5% 的 VM
    • 未附加的 Persistent Disks
    • 未使用的 Static IPs
  • Right-Sizing Recommendations(合適化建議)

    • Over-provisioned VMs
    • Under-utilized databases
  • Waste Reduction Metrics(浪費減少指標)

    • 每月可節省金額
    • 優化後的預估成本

存取路徑

Google Cloud Console → Billing → FinOps Hub → Utilization Insights

3.5 進階功能:BigQuery Export

🔧 進階/可跳過:以下這段的 BigQuery SQL 查詢屬於實務操作,不是 ACE 考試範圍。ACE 你只要記住一個觀念就好:「要做細緻的成本分析,就把帳單匯出(Export)到 BigQuery」。SQL 怎麼寫可以等實際工作再學,初學者第一次讀可以直接跳到下一節「折扣大作戰」。

為什麼需要 BigQuery Export?

雖然 Gemini 和 FinOps Hub 2.0 的 AI 分析已經很好用,但要做深度分析,BigQuery Export 還是少不了:

  • 複雜的自訂查詢(如:「找出成本週成長 > 20% 的專案」)
  • 串接 BI 工具(Looker、Tableau、Data Studio)
  • 長期歷史資料保留與趨勢分析

設定步驟

# Step 1: 建立 BigQuery dataset
bq mk --dataset --location=US billing_export

# Step 2: 在 Billing 設定中啟用 Export
# Google Cloud Console → Billing → Billing export
# → Enable BigQuery export
# → Select dataset: billing_export

# Step 3: 等待資料開始匯出(通常需 24 小時)

範例查詢:找出本月成本 Top 10 專案

SELECT
  project.name AS project_name,
  SUM(cost) AS total_cost,
  SUM(IFNULL((SELECT SUM(c.amount)
              FROM UNNEST(credits) AS c), 0)) AS total_credits
FROM
  `billing_export.gcp_billing_export_v1_XXXXX`
WHERE
  DATE(usage_start_time) >= DATE_TRUNC(CURRENT_DATE(), MONTH)
GROUP BY
  project_name
ORDER BY
  total_cost DESC
LIMIT 10;

範例查詢:按 Label 分攤成本

SELECT
  (SELECT value FROM UNNEST(labels) WHERE key = 'team') AS team,
  service.description AS service,
  SUM(cost) AS total_cost
FROM
  `billing_export.gcp_billing_export_v1_XXXXX`
WHERE
  DATE(usage_start_time) >= '2026-12-01'
GROUP BY
  team, service
ORDER BY
  total_cost DESC;

📊 Pro Tip:使用 Looker Studio 連接 BigQuery,建立 Real-time Cost Dashboard。

折扣大作戰:CUD vs SUD vs Spot VM 完全攻略

4.1 Committed Use Discounts (CUD) - 承諾使用折扣

運作機制

跟 GCP 簽 1 年或 3 年的承諾,換來大幅折扣。概念上就像「買房」對比「租房」。

兩種 CUD 類型

Type 1: Resource-Based CUD(資源型)

承諾用掉固定數量的資源(vCPU、RAM、GPU)。

折扣幅度

機器類型1 年期3 年期
一般用途(N1, N2, E2)37%55%
記憶體最佳化(M1, M2)37%70%
運算最佳化(C2, C2D)37%55%

範例:承諾使用 100 vCPU + 400 GB RAM(us-central1)

承諾內容:
  - 100 vCPU x 730 小時/月 = 73,000 vCPU-hours
  - 400 GB RAM x 730 小時/月 = 292,000 GB-hours

折扣計算:
  On-Demand 價格: $3,650/月
  3 年 CUD 價格: $1,643/月(55% off)
  每月節省: $2,007
  3 年總節省: $72,252

Type 2: Spend-Based CUD(消費型)

承諾每小時的最低消費金額($/hour),不綁定特定資源類型。

優點

  • 資源配置可以隨時調整(今天用 16 vCPU,明天改用 8 vCPU + GPU 都行)
  • 適合多專案、多團隊的環境

折扣幅度:spend-based / flexible CUD 跨服務(Compute Engine / GKE / Cloud Run)約 1 年 28% / 3 年 46%(多數機型;別跟綁機型的 resource-based CUD 3 年 55% 混為一談)

範例:承諾 $100/hour(3年期)

承諾內容:
  - $100/hour x 730 hours = $73,000/月

使用彈性:
  Week 1: 50 台 n1-standard-4 VM
  Week 2: 10 台 n1-highmem-8 + 5 張 V100 GPU
  Week 3: 100 台 e2-medium VM

只要每小時使用量達 $100,折扣全額套用

🚨 2026 年 1 月 21 日重大變更(必讀)

所有既有帳單帳戶(使用 spend-based CUD 者)將自動遷移到新的 Multiprice CUD 資料模型

時間軸

  • 2025 年 7 月 15 日:新帳戶(首次購買 spend-based CUD)自動採用新模型;既有帳戶可提前 opt-in
  • 🔄 2026 年 1 月 21 日:所有既有帳戶自動遷移(不可逆)

重大變更

  1. 折扣顯示方式改變

    • 舊模式:On-Demand 價格 + Credits(折扣以抵免額度形式)
    • 新模式:直接顯示折扣後價格(更透明)
    舊帳單:
      Compute Engine: $1,000
      CUD Credits: -$550
      Total: $450
    
    新帳單:
      Compute Engine (CUD discounted): $450
      Total: $450
  2. Multiprice 支援

    • 同一個 SKU 可以有多個價格(像是 On-Demand、CUD、客製化合約)
    • 系統會自動幫你套用最優惠的價格
  3. 擴大涵蓋範圍

    • ✅ Cloud Run SKUs(新增)
    • ✅ H3 VMs(新增)
    • ✅ 更多 GPU 類型
  4. BigQuery Export Schema 更新

    • 新增 pricing.effective_price 欄位
    • 更清楚追蹤折扣來源

影響與建議

⚠️ 注意事項

  • 遷移後就回不去舊模式了
  • 既有的 CUD 合約照樣有效,不受影響
  • 建議在 2026/1/21 前先檢查一下 BigQuery Export 的查詢要不要調整

優點

  • 帳單更簡潔易懂
  • 自動套用最優惠價格
  • 支援更多資源類型

📚 官方文件

CUD 購買建議

CUD 適合的是那種「未來一兩年都會穩穩跑」的東西 — production 資料庫、長期在線的 web server、每天定時跑的批次作業,或是用量穩定成長、你大致估得出來的專案。反過來,需求忽高忽低的開發/測試環境、業務還在試水溫的新創、或只是做個 PoC 驗證概念的短命專案,就別簽 CUD,免得承諾了卻用不到,反而虧。

購買策略

  1. 先看歷史用量:抓出過去 3-6 個月的基準用量(baseline usage)
  2. 保守一點估:CUD 承諾量抓基準用量的 70-80% 就好,留點 buffer
  3. 分散風險:分批買、每季檢討一次,別一口氣壓 3 年
  4. 混合搭配:CUD 顧基準用量,波峰用量交給 On-Demand + SUD

4.2 Sustained Use Discounts (SUD) - 持續使用折扣

運作機制

全自動,完全不用手動設定。Google 會自己追蹤每個資源的使用時數,單月用量一超過 25% 就開始打折。

SUD 的運作有個關鍵要先講清楚:它是按月、自動、邊際遞增的。也就是說,用得越久、折扣會分段往上加,而不是一過某個門檻就一口氣把整月帳單打 30%。GCP 把每月切成四段使用率區間,每一段套用不同的「邊際折扣率」,最後加總起來才是你這個月實際拿到的有效折扣。下面的級距表(以 N1 機型為例)就是這個邏輯:

折扣級距(N1 機型)

使用率該區間邊際折扣範例(n1-standard-4, $146.08/月 On-Demand)
0-25%0%前 182.5 小時 → $0 discount
25-50%20%此區間 → 約 $7.30 discount
50-75%40%此區間 → 約 $14.61 discount
75-100%60%此區間 → 約 $21.91 discount

跑滿整個月(730 小時)時,這四段加總下來的有效折扣大約是 30%,也就是省下約 $43.8、月費從 $146.08 降到約 $102.3。N2/N2D/C2/C2D 的級距結構不同,整月跑滿的有效折扣最高 20%。

最高折扣

機器類型最高 SUD
N1, M1, M2, GPU30%
N2, N2D, C2, C2D20%

SUD vs CUD 差異比較

項目SUDCUD
承諾期1-3 年
設定方式自動手動購買
最高折扣30%70%
適用場景波動工作負載穩定工作負載
退款政策N/A(隨時可停)有限制
疊加性✅ 可疊加 CUD✅ 超額用量享 SUD

黃金組合:CUD + SUD

策略

  • CUD 顧住基準用量(70-80% 需求)→ 拿 50-70% 折扣
  • 波峰超出的部分 → 自動吃 SUD 的 20-30% 折扣

範例

場景: 平日需 80 vCPU,假日需 120 vCPU

策略:
  - 購買 CUD: 80 vCPU (55% off)
  - 超額 40 vCPU → 享 SUD (30% off)

成本計算:
  Pure On-Demand: $5,110/月
  CUD (80 vCPU) + SUD (40 vCPU): $2,920/月
  節省: $2,190/月 (43%)

4.3 Spot VM - 最高 91% 折扣的終極武器

什麼是 Spot VM?

Spot VM 是 Google 的「剩餘運算資源拍賣」機制。GCP 把閒置的運算容量用超低價賣給你,但保留隨時把它收回去的權利。

Spot VM vs Preemptible VM

項目Preemptible VMSpot VM
發布時間20152021(建議使用)
最長執行時間24 小時強制中斷無 24 小時上限(但仍可能隨時被搶占)
折扣幅度最高 91%最高 91%(兩者同一套定價模型)
可用性舊版(仍可用)新版(官方推薦)

兩者其實是同一套定價模型,折扣都是浮動的 60-91%,所以折扣幅度不該拿來當差別。真正的差異只有一個:Preemptible 跑到 24 小時會被 GCP 強制停掉,Spot 沒有這個上限(一樣可能隨時被收回,但不會因為「跑太久」被趕)。這也是為什麼 2021 年後官方一律推薦改用 Spot。

適用場景

Spot 適合那些「斷了重來也沒差」的活 — ETL 批次處理、ML 模型訓練(能 checkpoint 就行,checkpoint 就是定期把進度存檔,被中斷後從存檔接著跑、不用從頭來)、影片渲染、CI/CD build、科學模擬這類,被搶占了就從上次存檔接著跑。反過來,碰到 production 資料庫、對外的 web server、不能斷的即時系統,或者沒有 checkpoint 機制、一斷就要從頭來的長時間運算,就別硬塞 Spot。

最佳實踐策略

1. 時段選擇

Spot VM 的可用性會隨時段差很多:

時段可用性建議
工作日 9am-6pm低(企業用量高)❌ 避免
工作日 6pm-9am⚠️ 可用但不穩定
週末高(數據中心負載低)✅ 最佳時段

2. 區域選擇與價格比較

Spot VM 的價格會隨各區域的供需而不同:

# 查詢 Spot VM 價格(以 n1-standard-4 為例)
gcloud compute machine-types list \
  --filter="name=n1-standard-4" \
  --format="table(name,zone,guestCpus,memoryMb)"

# 比較不同區域 Spot 價格
# us-central1-a: $0.040/hour (91% off)
# us-east1-b: $0.055/hour (88% off)
# asia-east1-a: $0.065/hour (85% off)

建議:優先挑 us-central1(愛荷華)或 us-west1(奧勒岡),不只價格最低,可用性也高。

3. 設定最高價(Max Price)

設個上限,免得動態定價衝太高:

gcloud compute instances create my-spot-vm \
  --zone=us-central1-a \
  --machine-type=n1-standard-4 \
  --provisioning-model=SPOT \
  --instance-termination-action=DELETE \
  --max-run-duration=3600s \
  --maintenance-policy=TERMINATE

4. 處理中斷(Preemption Handling)

Spot VM 被收回前,GCP 會給你 30 秒的寬限期

# 設定關機腳本(Shutdown script)
cat > shutdown.sh <<'EOF'
#!/bin/bash
echo "Spot VM is shutting down, saving state..."
# 保存進度到 Cloud Storage
gsutil cp /tmp/checkpoint.tar.gz gs://my-bucket/checkpoints/
# 通知 Slack
curl -X POST -H 'Content-type: application/json' \
  --data '{"text":"Spot VM terminated"}' \
  $SLACK_WEBHOOK_URL
EOF

# 建立 Spot VM with shutdown script
gcloud compute instances create my-spot-vm \
  --metadata-from-file shutdown-script=shutdown.sh \
  --provisioning-model=SPOT

5. 與 GKE 整合(推薦)

🔧 進階/可跳過:GKE(Kubernetes)的 NodePool 設定屬於遠超 ACE 範圍的深水區,初學者知道「GKE 可以用 Spot VM 當 node、被收回時會自動把工作搬到別台」這個觀念就夠了,下面的 YAML 不用硬啃。

用 GKE Autopilot 搭配 Spot VMs,就能自動做到容錯:

# GKE NodePool with Spot VMs
apiVersion: v1
kind: NodePool
metadata:
  name: spot-pool
spec:
  autoscaling:
    enabled: true
    minNodeCount: 0
    maxNodeCount: 10
  config:
    machineType: n1-standard-4
    spot: true # 註:GKE 的 Spot VM 用 spot: true;preemptible: true 是另一個(舊版)Preemptible VM 欄位,兩者不同
  management:
    autoRepair: true
    autoUpgrade: true

GKE 會自動幫你處理

  • Spot VM 被收回時,自動把 pods 重新調度到其他 node
  • On-Demand 跟 Spot VMs 混搭,確保服務不中斷

6. 實戰範例:ML 訓練成本優化

場景: 訓練 ResNet-50 模型,需 8 張 V100 GPU

成本比較:
  On-Demand (8x V100):
    - $2.48/hour x 8 = $19.84/hour
    - 訓練 10 小時 = $198.40

  Spot VM (8x V100):
    - $0.74/hour x 8 = $5.92/hour (70% off)
    - 預期中斷 2 次,總 12 小時 = $71.04
    - 節省: $127.36 (64%)

實作:
  - 每 30 分鐘儲存 checkpoint 到 Cloud Storage
  - 被中斷時,從最新 checkpoint 恢復訓練
  - 使用 GCS 的 Lifecycle Management,訓練完成後刪除舊 checkpoints

Spot VM 監控與告警

監控指標

  • Preemption Rate(中斷率):< 5% 為健康
  • Average Availability(平均可用性):> 90% 為穩定

設定告警

# Cloud Monitoring 告警:Spot VM 被中斷
gcloud alpha monitoring policies create \
  --notification-channels=CHANNEL_ID \
  --display-name="Spot VM Preemption Alert" \
  --condition-display-name="Spot VM preempted" \
  --condition-threshold-value=1 \
  --condition-threshold-duration=60s

📝 考場提點

「折扣三選一」是 ACE 最高頻的選型題,看到題目先抓關鍵字對應答案:

  • 工作負載穩定、24/7 長期跑、需求可預測 → CUD(要省最多就 3 年期)。
  • 工作負載可容忍中斷/可重試的批次、ETL、ML 訓練 → Spot VM(最高 91% 折扣)。
  • 什麼都不想設、用越多自動折SUD(自動套用,最高 30%,無需承諾)。

兩個經典陷阱:

  1. 題目出現 「mission-critical」「cannot tolerate interruption」「production database」 → 直接排除 Spot VM(會被收回),通常選 CUD。
  2. 題目出現 「no upfront commitment」「automatic」「without any configuration」 → 指向 SUD,不是 CUD(CUD 要簽約承諾)。

另外記住:Spot VM 與舊版 Preemptible VM 折扣一樣(都是 up to 91%),差別在 Preemptible 跑滿 24 小時會被強制停、Spot 沒這上限。

儲存與網路成本優化技巧

5.1 Storage Class 智慧選擇

四種 Storage Class 比較

Class最低儲存時間存取頻率價格 ($/GB/月)讀取費用 ($/GB)
Standard頻繁 (每週多次)$0.020$0
Nearline30 天不常 (每月 1 次)$0.010 (50% off)$0.01
Coldline90 天很少 (每季 1 次)$0.004 (80% off)$0.02
Archive365 天極少 (每年 1 次)$0.0012 (94% off)$0.05

選擇決策樹

是否每週存取?
├─ 是 → Standard Storage
└─ 否 → 是否每月存取?
    ├─ 是 → Nearline Storage
    └─ 否 → 是否每季存取?
        ├─ 是 → Coldline Storage
        └─ 否 → Archive Storage

Lifecycle Management(生命週期管理)

自動降級策略

{
  "lifecycle": {
    "rule": [
      {
        "action": { "type": "SetStorageClass", "storageClass": "NEARLINE" },
        "condition": { "age": 90 }
      },
      {
        "action": { "type": "SetStorageClass", "storageClass": "COLDLINE" },
        "condition": { "age": 365 }
      },
      {
        "action": { "type": "Delete" },
        "condition": { "age": 1825 }
      }
    ]
  }
}

範例:10 TB 備份資料,5 年總成本

策略成本計算總成本
全 Standard10 TB x $0.020 x 60 月$12,000
Lifecycle 優化Year 1-2: Standard → $4,800
Year 3-5: Coldline → $1,440
$6,240
節省$5,760 (48%)

5.2 網路成本優化

三大網路成本來源

1. Egress(出站流量)計費

流量類型價格 ($/GB)範例
同區域(Intra-zone)$0VM → VM(同 zone)
跨區域(Inter-region)$0.01-$0.08us-central1 → asia-east1
Internet Egress$0.085-$0.23GCP → 使用者瀏覽器

優化策略

  • ✅ 將相關資源放在同一 zone(免費)
  • ✅ 使用 Cloud CDN 減少 origin 流量
  • ❌ 避免跨區域 database 查詢

2. Load Balancer 費用

類型固定費用流量費用
HTTP(S) LB$18/月$0.008/GB
TCP/UDP LB$18/月$0.008/GB
Internal LB$0$0.01/GB

優化技巧:把多個 LB 合併成一個(用 URL maps 來分流)

3. Cloud CDN(內容傳遞網路)

成本比較

場景: 平均 1 GB 圖片,每月被瀏覽 10,000 次(總傳輸量 10,000 GB)

不使用 CDN:
  - Internet Egress: 10,000 GB x $0.12 = $1,200

使用 CDN:
  - Cache Hit(90%,9,000 GB)走 CDN: 9,000 GB x $0.04 = $360
  - Cache Miss(10%,1,000 GB)回源: 1,000 GB x $0.12 = $120
  - 總計: $480(節省 60%)

10 個省錢最佳實踐 Checklist

☑️ 1. 啟用 Billing Alerts(預算告警)

設定步驟

# Step 1: 建立預算
gcloud billing budgets create \
  --billing-account=BILLING_ACCOUNT_ID \
  --display-name="Monthly Budget" \
  --budget-amount=10000 \
  --threshold-rule=percent=50 \
  --threshold-rule=percent=90 \
  --threshold-rule=percent=100

# Step 2: 設定通知
# 當達 50%/90%/100% 時發送 email 告警

進階:自動關閉超支資源

# Cloud Function triggered by Pub/Sub budget alert
def stop_billing_instances(event, context):
    budget_notification = json.loads(base64.b64decode(event['data']).decode())
    if budget_notification['costAmount'] > budget_notification['budgetAmount']:
        # 停止所有非 production VM
        for instance in compute.instances().list(project=PROJECT_ID).execute():
            if 'production' not in instance['labels']:
                compute.instances().stop(instance=instance['name']).execute()

☑️ 2. 使用 Resource Labels 追蹤成本

標籤策略

必要標籤:
  - team: backend / frontend / data
  - env: production / staging / dev
  - project: project-alpha / project-beta
  - cost-center: engineering / marketing

範例: gcloud compute instances create my-vm \
  --labels=team=backend,env=production,cost-center=engineering

成本分攤報表

-- BigQuery: 按 team 分攤成本
SELECT
  labels.value AS team,
  SUM(cost) AS total_cost
FROM
  `billing_export.gcp_billing_export_v1_XXXXX`
CROSS JOIN UNNEST(labels) AS labels
WHERE
  labels.key = 'team'
  AND DATE(usage_start_time) >= '2026-12-01'
GROUP BY team
ORDER BY total_cost DESC;

☑️ 3. 刪除未使用的資源

常見浪費

資源偵測方法月費用浪費
Idle VMsCPU < 5% 持續 7 天$50-$500
Orphaned Disks未附加到 VM$0.04/GB/月
Unused IPs未綁定 VM$3.65/IP/月
Old Snapshots> 90 天未使用$0.026/GB/月

偵測腳本

# 找出 CPU < 5% 的 VM(過去 7 天)
gcloud monitoring time-series list \
  --filter='metric.type="compute.googleapis.com/instance/cpu/utilization"' \
  --format=json | jq '.[] | select(.points[].value.doubleValue < 0.05)'

# 找出 orphaned disks
gcloud compute disks list --filter="NOT users:*" --format="table(name,sizeGb,zone)"

# 找出未使用的靜態 IP
gcloud compute addresses list --filter="status=RESERVED" --format="table(name,region)"

☑️ 4. Right-Sizing(合適化 VM 規格)

使用 Recommender API

# 取得 VM resize 建議
gcloud recommender recommendations list \
  --project=PROJECT_ID \
  --location=us-central1 \
  --recommender=google.compute.instance.MachineTypeRecommender \
  --format=json

範例建議

{
  "name": "projects/123/locations/us-central1/recommenders/.../recommendations/abc",
  "description": "Save costs by resizing this VM",
  "primaryImpact": {
    "category": "COST",
    "costProjection": {
      "cost": {
        "units": "-45"
      },
      "duration": "2592000s"
    }
  },
  "content": {
    "operationGroups": [
      {
        "operations": [
          {
            "action": "replace",
            "path": "/machineType",
            "value": "zones/us-central1-a/machineTypes/n1-standard-2"
          }
        ]
      }
    ]
  }
}

建議:n1-standard-4 → n1-standard-2,每月省 $45

☑️ 5. 啟用 Auto Shutdown(自動關機)

開發/測試環境排程

# 使用 Cloud Scheduler + Cloud Functions
# scheduler.yaml
- name: stop-dev-vms
  schedule: "0 19 * * 1-5"  # 工作日 7pm
  target:
    httpTarget:
      uri: https://us-central1-PROJECT.cloudfunctions.net/stopDevVMs

- name: start-dev-vms
  schedule: "0 8 * * 1-5"  # 工作日 8am
  target:
    httpTarget:
      uri: https://us-central1-PROJECT.cloudfunctions.net/startDevVMs

成本節省

  • 開發環境每天運行 12 小時(8am-8pm)
  • 週末完全關閉
  • 節省:65% 運算成本

☑️ 6. 使用 Custom Machine Types

場景:需要高 RAM 但 CPU 不高的應用(如:in-memory cache)

成本比較

選項vCPURAM月費用
n1-highmem-8852 GB$392
Custom452 GB$280
節省$112 (29%)
# 建立 custom machine type
gcloud compute instances create my-custom-vm \
  --custom-cpu=4 \
  --custom-memory=52GB \
  --zone=us-central1-a

☑️ 7. 善用 Free Tier(免費額度)

Always Free(永久免費)

服務免費額度超額價格
Compute Engine1x e2-micro VM(us-central1/us-west1/us-east1)標準價格
Cloud Storage5 GB Standard$0.020/GB/月
Cloud Functions2M invocations/月$0.40/M invocations
Cloud Build2,500 build-minutes/月(default pool, e2-standard-2)$0.006/分鐘

策略

  • 個人專案用 e2-micro(免費)
  • 測試環境用 Free Tier 搭配 Spot VM
  • 小型 static website 可全免費(Cloud Storage + Cloud CDN)

📖 延伸閱讀:完整免費資源清單請參考 GCP 免費資源完全指南,含防爆帳單設定教學。

☑️ 8. 區域價格套利

價格差異

區域n1-standard-4價差
us-central1(愛荷華)$146.08/月Baseline
asia-northeast1(東京)$191.03/月+31%
europe-west2(倫敦)$180.48/月+24%

策略

  • 非延遲敏感服務:選最便宜區域(us-central1)
  • 需低延遲:選最近區域,但用 Spot VM 抵消價差

☑️ 9. 啟用 Organization Policies

限制資源建立

# 禁止建立昂貴的 VM types
constraints/compute.restrictMachineTypes:
  deniedValues:
    - 'm1-ultramem-*'
    - 'm2-ultramem-*'

constraints/compute.restrictRegions:
  allowedValues:
    - 'us-central1'
    - 'us-west1'

強制標籤

constraints/gcp.resourceLocations:
  allowedValues:
    - in:us-locations
    - in:asia-locations

☑️ 10. 定期成本審查(Cost Review)

每週

  • 查看 Billing Reports(本週 vs 上週)
  • 檢查異常增長的專案/服務

每月

  • 產生 Cost Summary Report
  • 與預算對比,分析差異原因
  • 更新 CUD/Spot VM 策略

每季

  • 全面資源盤點(使用 Asset Inventory)
  • 評估新的折扣方案(GCP 常推新優惠)
  • Benchmark 與 AWS/Azure 價格

成本異常告警設定教學

7.1 Budget Alerts(預算告警)

完整設定範例

# 建立多層級預算告警
gcloud billing budgets create \
  --billing-account=012345-6789AB-CDEFGH \
  --display-name="Production Budget - 2026" \
  --budget-amount=50000 \
  --threshold-rule=percent=50,basis=CURRENT_SPEND \
  --threshold-rule=percent=90,basis=CURRENT_SPEND \
  --threshold-rule=percent=100,basis=FORECASTED_SPEND \
  --all-updates-rule-monitoring-notification-channels=projects/PROJECT_ID/notificationChannels/CHANNEL_ID \
  --all-updates-rule-pubsub-topic=projects/PROJECT_ID/topics/billing-alerts

告警策略

閾值基準動作
50%實際消費Email 通知 team lead
90%實際消費Email + Slack 通知所有人
100%預測消費Email + Slack + 自動停止 dev/staging VMs

7.2 Anomaly Detection(異常偵測)

使用 Cloud Monitoring + BigQuery

-- 偵測成本週增長 > 30% 的專案
WITH weekly_cost AS (
  SELECT
    project.name AS project_name,
    DATE_TRUNC(DATE(usage_start_time), WEEK) AS week,
    SUM(cost) AS total_cost
  FROM `billing_export.gcp_billing_export_v1_XXXXX`
  GROUP BY project_name, week
),
cost_change AS (
  SELECT
    project_name,
    week,
    total_cost,
    LAG(total_cost) OVER (PARTITION BY project_name ORDER BY week) AS prev_week_cost,
    (total_cost - LAG(total_cost) OVER (PARTITION BY project_name ORDER BY week))
      / NULLIF(LAG(total_cost) OVER (PARTITION BY project_name ORDER BY week), 0) AS growth_rate
  FROM weekly_cost
)
SELECT
  project_name,
  week,
  total_cost,
  prev_week_cost,
  ROUND(growth_rate * 100, 2) AS growth_percent
FROM cost_change
WHERE growth_rate > 0.3  -- 成長 > 30%
  AND week = DATE_TRUNC(CURRENT_DATE(), WEEK)
ORDER BY growth_rate DESC;

自動化告警

# Cloud Function: 每日執行上述查詢,發現異常時通知
import google.cloud.bigquery as bq
import slack_sdk

def detect_cost_anomaly(event, context):
    client = bq.Client()
    query = """..."""  # 上述 SQL
    results = client.query(query).result()

    anomalies = [row for row in results if row.growth_percent > 30]

    if anomalies:
        slack_client = slack_sdk.WebClient(token=SLACK_TOKEN)
        message = f"⚠️ Cost Anomaly Detected!\n"
        for anomaly in anomalies:
            message += f"- {anomaly.project_name}: +{anomaly.growth_percent}%\n"

        slack_client.chat_postMessage(
            channel="#billing-alerts",
            text=message
        )

📝 考場提點

成本「可見性與歸屬」也是 ACE 常考的工具對應題,記住這幾組關鍵字 → 答案:

  • 問**「追蹤哪個團隊/專案/環境花了多少」「成本歸屬」「cost allocation」** → Labels 標記資源(team、env…)+ Billing Export to BigQuery 做分析。
  • 問**「超過預算要自動處理/自動停資源」** → 這是經典陷阱:Budget Alert 只發通知,不會自己停任何資源。要真的自動停,得讓 Budget Alert 發 Pub/Sub 訊息,再用 Cloud Function 接收後去關 VM。看到「automatically stop / shut down resources when over budget」千萬別選只設 Budget Alert。
  • 問**「不寫程式、要視覺化分析帳單」** → Billing Reports 頁面(內建 Group by project/service/label);要更深入自訂查詢才上 BigQuery Export。

總結與下一步行動

一句話小結

要省錢,先看得到(Labels + 報表,知道錢花在哪),再買對折扣(CUD 顧住穩定的基準用量、Spot 接那些可重來的容錯工作、SUD 用越多自動折),最後讓自動化幫你守底線(Budget Alert + Cloud Scheduler 自動關閉開發環境)。順序很重要:沒有可見性,後面的折扣與自動化都是瞎猜。

順帶一提,這幾年 GCP 在成本工具上加了不少新東西 — Optimization Hub(集中顯示所有優化建議)、FinOps Hub 的浪費偵測、Gemini Cloud Assist 的自然語言查詢。對實務有幫助,但這些都不是 ACE 的考點,知道有這些工具即可,不用硬背。

成本優化成熟度模型

Level 1: 基礎(反應式)

  • ✅ 啟用 Billing Alerts
  • ✅ 每月查看帳單
  • ✅ 刪除明顯未使用的資源

Level 2: 進階(主動式)

  • ✅ 使用 Labels 追蹤成本
  • ✅ 購買 CUD 涵蓋穩定工作負載
  • ✅ 開發環境自動關機
  • ✅ 定期 Right-Sizing

Level 3: 專家(預測式)

  • ✅ BigQuery Export + BI Dashboard
  • ✅ 異常偵測自動告警
  • ✅ CUD + SUD + Spot VM 組合策略
  • ✅ FinOps 團隊定期審查
  • ✅ 成本納入架構設計考量

30 天行動計畫

Week 1: 建立可見性

  • Day 1-2: 啟用 Billing Reports,分析現狀
  • Day 3-4: 設定 Budget Alerts(50%/90%/100%)
  • Day 5-7: 啟用 BigQuery Export,建立基礎 Dashboard

Week 2: 快速勝利(Quick Wins)

  • Day 8-10: 刪除 orphaned disks、unused IPs、old snapshots
  • Day 11-12: 停止 idle VMs(CPU < 5%)
  • Day 13-14: 設定開發環境自動關機(省 50%+)

Week 3: 折扣策略

  • Day 15-17: 分析過去 3 個月用量,規劃 CUD 購買
  • Day 18-20: 識別容錯工作負載,遷移至 Spot VM
  • Day 21: 驗證 SUD 自動套用情況

Week 4: 持續優化

  • Day 22-24: 實施 Resource Labels 策略
  • Day 25-27: 設定 Lifecycle Management(Storage)
  • Day 28-30: 建立每週成本審查流程

預期成果:30 天內節省 30-50% 總成本

延伸學習資源

官方文件

工具

社群

系列文章推薦


ACE 考試重點整理

必背知識點

  1. CUD(Committed Use Discount):1 年約 37% 折扣,3 年約 55% 折扣,適合穩定工作負載
  2. SUD(Sustained Use Discount):自動折扣,用越多折越多(最高 30%),無需承諾
  3. Spot VM(原 Preemptible VM):最高 91% 折扣,但可能被中斷,適合批次/容錯工作
  4. Billing Export to BigQuery 可做細緻的成本分析
  5. Budget Alert 可設定預算閾值自動通知(50%/90%/100%)
  6. Labels 是成本歸屬的關鍵——用 label 標記團隊、環境、專案

常見陷阱題

Q:工作負載 24/7 穩定運行,如何最大程度省錢? A:3 年 CUD(55% 折扣)。Spot VM 不適合(會被中斷),SUD 折扣不夠深。

Q:批次資料處理工作可以容忍中斷和重試,如何省錢? A:Spot VM(最高 91% 折扣)。搭配 MIG 自動重建被中斷的實例。

Q:如何追蹤哪個團隊花了多少雲端費用? A:使用 Labels 標記資源(team=frontend),搭配 Billing Export to BigQuery 做分析。

Q:設定 Budget Alert 後,超過預算會自動停止資源嗎? A:不會。Budget Alert 只發通知,不會自動停止。要自動控制需搭配 Cloud Functions 處理 Pub/Sub 通知。

ACE 職涯與認證 — 2/5 完成 查看系列全覽 →

留言討論

徽章解鎖!