PCA 合格対策

Deep Dive: Compute

Google Cloud のコンピュート全領域を、公式ドキュメントベースで技術深掘り。 GCE / GKE / Cloud Run / Cloud Run functions / App Engine / VMware Engine の選定・設計・運用上の落とし穴を、PCA 試験の判断軸とともに整理します。

📘 IaaS〜FaaS の階層 🎯 PCA 試験で頻出 ⚙️ 公式 15 ドキュメント参照 🧭 決定ツリー / アンチパターン
⚡ TL;DR — このページで掴むべき要点
  • 選定軸はステートとマネジメント度:ステートフル+OS制御 → GCE、コンテナ・運用統制 → GKE、HTTP/イベント駆動・スケールゼロ → Cloud Run、関数1個 → Cloud Run functions
  • Spot VM は最大 91% 割引/中断猶予 30 秒のみ。ステートフル DB に使うと事故る。バッチ・チェックポイント前提 + SIGTERM ハンドラー必須。
  • GKE は Autopilot 第一候補。Standard を選ぶのは「特権 Pod / DaemonSet / GPU 直制御 / ホスト OS 触る」場合のみ。
  • Workload Identity は GKE で事実上必須。サービスアカウントキーのマウントはアンチパターン。
  • Cloud Run の SLA を厳守するなら min instances ≥ 1 + Startup CPU Boost。コールドスタートを設計レベルで排除する。
  • App Engine は新規プロジェクト非推奨。公式が Cloud Run を推奨。Standard の特殊機能(Memcache、Task Queue ネイティブ)が必要な既存資産以外は移行検討。
  • VMware Engine (GCVE) は「既存 VMware 資産そのまま」。HCX で L2 拡張、ベアメタル隔離、Google マネージド。リフトアンドシフトの最終手段。

1コンピュート全体像 — IaaS / CaaS / PaaS / FaaS の階層

Google Cloud のコンピュートは 抽象化の度合い によって 4 階層に整理できます。 下層ほど OS や ネットワークまで自由に制御でき、上層ほど Google が運用を肩代わりします。 PCA 試験では「ステート保持」「コンテナ可否」「スケーリング特性」「運用負荷」の 4 軸で 正しく選定する判断力が問われます。

IaaS(自由度↑ / 運用負荷↑) Compute Engine(GCE) — VM・OS・ディスク・ネットワークまで完全制御 CaaS(コンテナ as a Service) GKE Standard / Autopilot — K8s API・Pod 単位の制御、Autopilot は Pod 課金 PaaS(プラットフォーム) Cloud Run / App Engine — リクエスト課金 + スケールゼロ、コンテナ or 言語ランタイム FaaS(関数) Cloud Run functions — トリガー駆動、関数1個から、ms 単位課金 抽象化レベル ↑ 運用負荷 ↓
図1: コンピュート抽象度の階層と GCP マッピング
階層 サービス 制御単位 スケール特性 課金単位 運用負荷
IaaSCompute EngineVM / OS / ディスクMIG で自動VM 秒課金
CaaSGKE Standardノード + PodCluster Autoscalerノード課金中〜高
CaaSGKE AutopilotPod のみPod 自動Pod リクエスト課金
PaaSCloud Runコンテナイメージ0→1000 / 秒リクエスト / インスタンス時間
PaaSApp Engine Std言語ランタイム0→自動インスタンス時間
FaaSCloud Run functions関数1個0→自動呼び出し + ms最低
VMwareVMware EnginevSphere クラスタ手動 / APIノード時間高(オンプレ同等)
💡 判断のコツ 「ステートフルか?」「OS にログインしたいか?」「コンテナ化できるか?」「リクエスト駆動か?」の 4 つの Yes/No で、ほぼ自動的に選定できます。次章の決定ツリーで体系化します。
🎯 試験での出題パターン(全体像) 「最小運用工数で X を実現したい」と書かれていたら、まず Cloud Run / Cloud Run functions を疑う。 「特定の OS / カーネルモジュール / GPU 直制御」が出てきたら GCE。 「コンテナ + 既存 K8s 資産 + マルチクラスタ」なら GKE。

2コンピュート選定 完全フロー — 決定ツリー

PCA のケーススタディは、必ず「コンピュート選定」を内包します。 以下のフローを頭に焼き付けておくと、Q1 を 30 秒で正答候補に絞れます。

Q1: 既存 VMware 資産をそのまま使う必要があるか? vSphere / NSX / vSAN の運用継続性を維持したい?
Yes → VMware Engine (GCVE)
No → 次へ
Q2: OS / カーネルレベルの制御 / 特殊ハードウェア(特定 GPU・Local SSD・Confidential)が必要か?
Yes → Compute Engine (MIG 推奨)
No → 次へ
Q3: Kubernetes(K8s API・既存 manifest・複雑なマイクロサービス)が必要か?
Yes → GKE(まず Autopilot、特殊要件で Standard)
No → 次へ
Q4: コードは「単一関数」か? それとも複数エンドポイント / 大規模?
単一関数 / イベント1個 → Cloud Run functions
コンテナ / 複数 API → Cloud Run
Q5(補助): App Engine は使うべき?
→ 既存 GAE 資産が大量にある場合のみ。新規は Cloud Run を選ぶ。

マシンファミリー選定(GCE 限定)

用途で分岐
汎用 Web / バックエンド → E2 / N2 / N4
HPC / シミュレーション → C2 / C3 / H3 / H4D
インメモリ DB / SAP HANA → M1 / M2 / M3 / M4 / X4
ML 学習 / 推論 → A2 / A3 / A4 / G2 / G4 (GPU)
NoSQL / 高 IOPS → Z3(ストレージ最適化)
⚠️ 試験での罠 「コストを最小化したい」と書かれているからといって 必ずしも E2 が正解とは限らない。 長時間稼働なら CUD(Committed Use Discount)も込みで考える。 E2 は CPU バースト機能あり / 共有コアのため、安定した CPU を要求する用途には不向き。
🎯 試験での出題パターン(選定) ・「リフトアンドシフトでオンプレの Linux VM を最速で移行」→ GCE(または GCVE)
・「マネージド K8s で運用負荷を最小化」→ GKE Autopilot
・「画像アップロードをトリガーにサムネ生成」→ Cloud Run functions
・「マイクロサービス API、スパイク対応必須、スケールゼロ可」→ Cloud Run

3Compute Engine 詳細 — マシンファミリーから Live Migration まで

"Compute Engine offers VM instances and bare metal instances with the KVM hypervisor. Compute Engine has a monthly uptime SLO of at least 99.9%." 公式↗

3.1 マシンファミリー全 5 系統

汎用 (General-Purpose) G

バランス型。Web / アプリサーバー、小〜中規模 DB 向け。

系列: E2 / N1 / N2 / N2D / N4 / T2D / T2A / C4 / C4A / C4D
世代: 第 4 世代 = N4 / C4 / C4A / C4D

コンピュート最適化 C

HPC、ゲームサーバー、シングルスレッド性能が必要なワークロード。

系列: C2 / C2D / H3 / H4D
H3 / H4D は HPC 専用(高クロック、密結合)

メモリ最適化 M

SAP HANA、インメモリ分析、大規模 OLAP。最大数 TB メモリ。

系列: M1 / M2 / M3 / M4 / X4
X4 = 最大 32 TB メモリ

アクセラレータ最適化 A

ML 学習 / 推論、CUDA、グラフィックス。GPU/TPU 搭載。

系列: A2 / A3 / A4 / A4X / G2 / G4
A4X = NVIDIA GB200 / A3 = H100, A2 = A100

ストレージ最適化 S

SQL / NoSQL / ベクトル DB。Local SSD 大容量。

系列: Z3 (第 3 世代)
フラッシュ最適化
📐 マシンタイプ命名規則 — n2-standard-4 を読み解く

{family}-{shape}-{vcpu} の 3 要素で表現されます。

  • n2 = ファミリー + 世代(N シリーズ第 2 世代)
  • standard = メモリ比(standard=4GB/vCPU、highmem=8GB/vCPU、highcpu=2GB/vCPU)
  • 4 = vCPU 数

サフィックス:

  • -lssd = Local SSD 自動アタッチ
  • -metal = ハイパーバイザーなしのベアメタル

例: c4-standard-8-lssd = C 第 4 世代 / standard / 8 vCPU / Local SSD 付き

3.2 Custom Machine Type

N シリーズと E シリーズに限り、vCPU 数とメモリ量を自由に組み合わせできます。 「8 vCPU だけど 80 GB メモリほしい」といった非標準ニーズに対応。

⚠️ Custom Machine Type の罠
  • vCPU は 2 以上の偶数(または 1)。
  • メモリは vCPU あたり 0.5〜6.5 GB。それ以上は「extended memory」扱いで追加課金。
  • CUD(Committed Use Discount)は適用可能だが、Sustained Use Discount(自動継続割引)と組み合わせると最終料金が複雑化。試験では「CUD を活用するため、標準マシンタイプを選ぶべき」となる選択肢も。

3.3 ストレージオプション — Persistent Disk / Hyperdisk / Local SSD

種類耐久性性能用途注意
Standard PD (pd-standard) 耐久 バックアップ、起動ディスク HDD ベース。IOPS / スループットは容量依存。
Balanced PD (pd-balanced) 耐久 一般 Web、開発環境 SSD コスト効率型。多くの用途で第一選択。
SSD PD (pd-ssd) 耐久 本番 DB、低レイテンシ要件 IOPS は容量に比例。30,000 IOPS 上限(容量で変動)。
Extreme PD (pd-extreme) 耐久 最高(PD 系) 大規模 OLTP、HANA IOPS を独立指定可能。
Hyperdisk Balanced / Extreme / Throughput / ML 耐久 超高 / カスタマイズ可 第 3〜4 世代マシン専用 容量・IOPS・スループットを独立で課金。Storage Pool で共有可。
Local SSD なし(VM 停止で消失) 最高 キャッシュ、スクラッチ、Spark / Hadoop シャッフル 各 375 GB のパーティションが固定。VM 起動時にアタッチ。
🚨 Local SSD の致命的注意 Local SSD は「VM 停止」「メンテナンスイベント」「ホスト障害」でデータが完全消失します。 Live Migration はサポート(インスタンスタイプ依存)ですが、停止・再開すると消えます。 永続化が必要なデータを絶対に置かない

3.4 Live Migration と メンテナンスポリシー

Compute Engine はホストメンテナンス時、VM を別ホストへ無停止移行(Live Migration)できます。 これにより、計画メンテナンスでアプリが止まらないのが GCE の差別化ポイントです。

onHostMaintenance
MIGRATE(デフォルト・Live Migration 実行)または TERMINATE(停止)。
automaticRestart
ホスト障害時に自動再起動。デフォルト true
preemptible / spot
Live Migration 不可、必ず TERMINATE
GPU / TPU 付き VM
多くの場合 Live Migration 不可(最近のシリーズで一部対応)。
Sole Tenant Nodes
ノード内移行が可能。
💡 Live Migration が使えないケース Spot VM / Preemptible / 一部の GPU 付き / Confidential VM(一部対応)/ Local SSD 付き(条件あり)。 これらは TERMINATE + MIG の Auto-healing で代替する設計が必須。
🎯 試験での出題パターン(GCE) ・「メンテナンスでも停止させたくない」→ onHostMaintenance=MIGRATE
・「GPU 付きでメンテ時の挙動を制御」→ TERMINATEautomaticRestart=true
・「最大 IOPS が必要な OLTP」→ Hyperdisk Extreme または pd-extreme

4Spot VM 完全解剖 — 91% 割引の裏側と中断ライフサイクル

"Spot VMs are VMs that use the spot provisioning model... offer up to 91% discounts... Spot VMs are excluded from the Compute Engine SLA." 公式↗

4.1 Spot VM とは何か

Google が 余剰計算リソース を最大 91% 引きで提供する仕組み。 ただし、Google は いつでも任意のタイミングで中断(preempt)できます。 SLA 対象外で、Free Tier クレジットも適用されません。

4.2 中断ライフサイクル — 30 秒の猶予を逃すな

①中断通知 Metadata flag preempted=TRUE ②SIGTERM 送信 ACPI G2 Soft Off ③グレースフル猶予(最大 30 秒) この間に save state / flush / 終了処理 ④SIGKILL 強制停止 ⑤TERMINATED or DELETE Spot VM の中断ライフサイクル 通知から強制停止まで「ベストエフォート 30 秒」 120s (preview) or 0s (default)
図2: Spot VM の中断シーケンス — SIGTERM ハンドラの実装が生死を分ける
  1. 中断通知: Metadata Server 上で scheduling/preempted=TRUE がセット。アプリは metadata polling で検知可能。
  2. SIGTERM 送信: ACPI G2 Soft Off 経由で OS にシグナル。Linux なら systemd 終了プロセスが起動。
  3. グレースフル猶予: 公式は「best effort and up to 30 seconds」。確約されないため、30 秒「以内」と考える
  4. SIGKILL: 強制停止。アプリは未完了処理をすべて失う。
  5. 状態遷移: TERMINATION_ACTION 設定で STOP(再起動可)または DELETE

4.3 Spot VM vs Preemptible VM

Spot VM(現行・推奨)

  • 有効期限なし(24 時間制限が撤廃)
  • 動的価格(最大 91% OFF、日次変動)
  • Termination Action 設定可能(STOP / DELETE)
  • 多くのマシンタイプで利用可

Preemptible VM(レガシー)

  • 最大 24 時間で必ず終了
  • 固定価格(最大 80% OFF)
  • 常に DELETE
  • 新規利用は非推奨。試験では「Spot VM が後継」と覚える

4.4 SIGTERM ハンドラー実装パターン

📝 Python での SIGTERM ハンドラー実装例
import signal, sys, time

def handle_sigterm(signum, frame):
    # 30 秒以内にすべて完結させる
    print("SIGTERM received. Flushing state...")
    flush_to_gcs()      # チェックポイント保存
    close_db()          # コネクション解放
    deregister_from_lb()# LB から登録解除
    sys.exit(0)

signal.signal(signal.SIGTERM, handle_sigterm)

# メイン処理
while True:
    do_work()
    time.sleep(1)
🔍 Metadata 経由で中断検知(polling パターン)
import requests, time

METADATA_URL = "http://metadata.google.internal/computeMetadata/v1/instance/preempted"
HEADERS = {"Metadata-Flavor": "Google"}

while True:
    r = requests.get(METADATA_URL, headers=HEADERS)
    if r.text.strip() == "TRUE":
        # 中断確定。シャットダウン処理
        graceful_shutdown()
        break
    time.sleep(5)

4.5 ベストプラクティス vs アンチパターン

✅ ベストプラクティス

  • バッチ処理 / 動画エンコード / ML 学習 / Hadoop / Spark
  • チェックポイントを GCS / Cloud Storage に保存
  • MIG + Cluster Autoscaler で複数ゾーンに分散
  • Spot + Standard のミックス(Mixed Instance Group)
  • SIGTERM ハンドラー実装必須

🚨 アンチパターン

  • MySQL / PostgreSQL の本番運用(State 喪失リスク)
  • SLA を約束する API のフロント
  • 長時間トランザクション(30 秒超)
  • SIGTERM ハンドラーなしで起動
  • 単一ゾーンに集中(同時に全 VM が消える)
🎯 試験での出題パターン(Spot VM) ・「機械学習の学習ジョブをコスト最小化したい」→ Spot VM + チェックポイント
・「動画エンコード、中断耐性あり」→ Spot VM + MIG
・「SLA 99.95% 必須の API」→ Spot VM 不可(標準 VM や Cloud Run)
・「Preemptible と Spot どちらを選ぶ?」→ 常に Spot(Preemptible はレガシー)

5MIG オートスケーリング設計 — リージョナル・Stateful・シグナル選定

5.1 MIG とは — Zonal vs Regional

Zonal MIG

  • 単一ゾーンに VM を展開
  • 上限: 1,000 VM / MIG
  • ゾーン障害で全滅 → DR 設計が別途必要
  • 用途: 単純なオートスケール、テスト

Regional MIG(推奨)

  • リージョン内の複数ゾーンに分散配置
  • 上限: 2,000 VM / MIG
  • ゾーン障害自動回避(残ゾーンで継続)
  • 用途: 本番 Web、API、SLA 重視

5.2 Autoscaler のシグナル種類

MIG Autoscaler CPU 利用率 target: 60% Load Balancer serving capacity Pub/Sub Queue queue depth Custom Metric Cloud Monitoring Schedule 予測スケジュール Scale Out VM 追加 Scale In VM 削除
図3: MIG Autoscaler のシグナルフロー — 複数シグナルを同時利用可能(OR ロジック)
シグナル適用例注意
CPU 利用率汎用 Web、APIデフォルト 60%。低すぎると過剰スケール
LB Serving CapacityHTTP(S) LB の背後RPS / 接続数で判定。最も正確
Pub/Sub Queue Depth非同期ワーカーZonal MIG 限定。キューが溜まると増、空くと減
Custom Metric (Cloud Monitoring)独自指標(リクエスト深度、業務 KPI)Per-instance / Per-group のいずれかで指定
Schedule毎朝 9 時にスケール予測型。先回りスケール可能

5.3 Stateful MIG — DB 等の State を保持

通常の MIG は「VM は使い捨て」前提ですが、Stateful MIG は インスタンス名、アタッチされた PD、メタデータを保持します。 これにより MIG の自動修復・更新で State を失わずに済みます。

⚠️ Stateful MIG の制限
  • Stateful PD は VM ごとに作成・課金される(Pooled 不可)
  • Auto-healing で State 維持できるが、ゾーン障害時は新 VM で同じ PD アタッチ不可(Regional PD は別)
  • 水平スケールに不向き(State 集中)
  • Cloud SQL / Spanner で代替できる場合はそちらを選ぶ

5.4 ローリングアップデート — Surge / In-place

更新タイプ動作用途
Proactive (Surge) 新 VM を先に作って古い VM を置換。maxSurge=20% で 20% 余剰作成 ダウンタイムゼロ、無停止デプロイ
Opportunistic VM の再作成が発生したタイミングでだけ新テンプレ適用 急ぎでない更新、段階的
Canary 新テンプレを一部 VM だけに適用(例: 10%) 本番影響を限定したデプロイ検証
In-place (Restart) 同じ VM 名で再起動(Stateful MIG) State 維持しつつイメージ更新

5.5 Auto-healing と Health Check

🚨 ヘルスチェックの 2 つの意味を間違えるな
  • LB Health Check: 不健全な VM への トラフィックを止めるだけ。VM は削除しない。
  • MIG Auto-healing Health Check: 不健全な VM を 削除して再作成する。
この 2 つは別物。試験で「MIG が VM を再作成しない、なぜ?」→ Auto-healing のヘルスチェックが未設定
🎯 試験での出題パターン(MIG) ・「ゾーン障害でも稼働継続」→ Regional MIG
・「Pub/Sub のキュー深度に応じてワーカー増減」→ Zonal MIG + Pub/Sub シグナル
・「不健全な VM を自動置換」→ Auto-healing(LB Health Check ではない)
・「ステートフルアプリ + 同じ PD 維持」→ Stateful MIG

6Sole Tenant Nodes — 専有ハードウェアと BYOL

"Sole-tenant nodes are physical Compute Engine servers that are dedicated to hosting only your project's VMs." 公式↗

6.1 Sole Tenant Nodes が解決する 3 つの課題

① BYOL(Bring Your Own License)

Windows Server / SUSE / RHEL の自社所有ライセンスを GCP に持ち込み。物理コアと物理プロセッサが追跡され、ライセンス管理に活用可能。

② 規制隔離

金融・医療・政府系で「他テナントと物理リソースを共有しない」要件を満たす。ハードウェア分離による物理セキュリティ。

③ コンプライアンス

監査要件で「物理サーバー ID 報告必須」のケース。Sole Tenant は VM が動く物理サーバーの ID をメタデータで返す。

6.2 コスト構造の特徴

⚠️ コストの罠 Sole Tenant Node はノード全体を予約するため、容量を使い切らないと割高。 ・VM 単位料金ではなく「ノード単位料金」
・ノード上の VM 容量 = ノードのフル仕様(例: n2-node-80-640 = 80 vCPU / 640 GB)
・CUD(1年 / 3年契約)で割引可能だが、コミットが必要

6.3 Affinity Labels — VM のノード配置制御

Node Affinity: VM が特定のノード(または ノードグループ)に配置されるよう制御。 Node Anti-Affinity: 「Web1 と Web2 を必ず別ノードに置く」HA 配置。

📝 gcloud で Sole Tenant Node 作成例
# 1. ノードテンプレート作成
gcloud compute sole-tenancy node-templates create my-template \
  --node-type=n2-node-80-640 \
  --node-affinity-labels=workload=oracle

# 2. ノードグループ作成
gcloud compute sole-tenancy node-groups create my-group \
  --node-template=my-template \
  --target-size=2 \
  --zone=us-central1-a

# 3. ノードグループに VM 作成
gcloud compute instances create my-vm \
  --machine-type=n2-standard-8 \
  --node-group=my-group \
  --zone=us-central1-a
🎯 試験での出題パターン(Sole Tenant) ・「Windows Server ライセンスを GCP に持ち込み」→ Sole Tenant + BYOL
・「物理的分離が必要な金融データ」→ Sole Tenant Nodes
・「Web1 と Web2 を別物理サーバーに配置」→ Sole Tenant + Anti-Affinity Label

7Confidential Computing — 使用中のデータも暗号化

従来の暗号化は「保存時 (at rest)」と「転送中 (in transit)」のみカバー。 Confidential Computing は「使用中 (in use)」のメモリ内データもハードウェアレベルで暗号化します。

7.1 ハードウェア技術 — AMD SEV / SEV-SNP / Intel TDX

技術提供元保護内容対応マシン
AMD SEV AMD EPYC メモリ暗号化 + vTPM ブート認証 N2D / C2D / C3D
AMD SEV-SNP AMD EPYC (Gen 3+) SEV + ハイパーバイザー攻撃防御(リプレイ、リマッピング) C3D 等
Intel TDX Intel Xeon Trust Domain 内で VM 隔離。DRAM 攻撃防御 C3 等

7.2 性能オーバーヘッド

📐 ベンチマーク傾向 ・AMD SEV: 通常 VM との性能差は最小(5% 以下が一般的)
・N2D / C3D は Live Migration もサポート(多くのケースで)
・暗号化処理は CPU 内で実施されるため、ホスト側に追加負荷なし

7.3 ユースケース

🎯 試験での出題パターン(Confidential) ・「メモリ内の機密データを HW で保護」→ Confidential VM
・「K8s ノード全部を Confidential 化」→ Confidential GKE Nodes
・「複数銀行で AML データを共有せず分析」→ Confidential VM + Confidential Space

8GKE Autopilot vs Standard — 課金と制限の決定的な差

"Autopilot clusters enable and apply security best practices and settings by default... Privileged Pods require allowlists." 公式↗

8.1 課金モデルの違い

GKE Standard Node (n2-standard-4) Pod A Pod B 未使用 → 課金される 課金 = ノード全体 Pod が使ってない分も支払う GKE Autopilot Node (Google 管理・不可視) Pod A Pod B 課金 = Pod 要求のみ CPU/Memory request 分だけ + コントロールプレーン課金は両者共通
図4: GKE 課金モデルの違い — Autopilot は Pod 要求のみ、Standard はノード単位

8.2 機能比較マトリクス

項目StandardAutopilot
ノード管理手動(自分でノードプール定義)Google が完全管理
課金ノード時間Pod 要求のリソース時間
SLAコントロールプレーンのみPod レベル SLA も付与
特権 Pod (privileged)許可原則禁止(allowlist 必要)
hostNetwork / hostPID許可禁止
DaemonSet許可制限あり
カスタムノード(OS / カーネル)許可不可
セキュリティ強化手動デフォルト適用
Workload Identity有効化必要デフォルト有効
GPU / TPU可(ComputeClass 経由)
Pod packing 最適化自分でGoogle が自動
🚨 Autopilot の重要な制約
  • privileged: true は禁止(Falco、Calico の一部機能、CNI 拡張など影響)
  • hostNetwork: true 不可(ノードの IP を直接使う用途は使えない)
  • ノードに SSH 不可(kubelet / containerd の挙動デバッグが制限)
  • kernel module ロード不可(GPU ドライバなど特殊用途に注意)
逆に言えば、上記が必要な特殊用途以外はAutopilot 第一候補

8.3 選定基準

特権 Pod / hostNetwork / カスタムカーネル / ノード SSH のいずれかが必要か?
Yes → GKE Standard(運用負荷高い)
No → GKE Autopilot(推奨)
🎯 試験での出題パターン(Autopilot vs Standard) ・「運用工数最小化、K8s 必要」→ Autopilot
・「Pod レベル SLA が必要」→ Autopilot のみ
・「Cilium の特権機能を使いたい」→ Standard
・「Pod request 未設定で Autopilot にデプロイ」→ デフォルト値が自動付与

9GKE 詳細設計 — Regional / リリースチャンネル / Workload Identity

9.1 Regional vs Zonal クラスタ

Zonal Cluster

  • コントロールプレーン: 1 ゾーンに 1 個
  • ワーカーノード: 1 ゾーン(または複数ゾーン: multi-zonal)
  • コントロールプレーン障害 → クラスタ操作不可(既存 Pod は稼働)
  • 無料枠 1 個、それ以降は時間課金

Regional Cluster(本番推奨)

  • コントロールプレーン: 3 ゾーンに分散
  • ワーカーノード: 複数ゾーン分散(既定)
  • ゾーン障害でも API 利用可能、SLA 99.95%
  • 本番運用必須

9.2 リリースチャンネル — どこを選ぶ?

チャンネルK8s バージョン更新頻度用途
Rapid最新(GA 直後)最速開発 / 検証、最新機能を試したい
Regular少し前のバージョン本番(デフォルト推奨)
Stable枯れたバージョン非常に保守的な本番(金融等)
Extended長期サポート最遅14 か月以上維持したい場合(追加料金)
No channel固定自動更新なし非推奨(脆弱性放置リスク)

9.3 Workload Identity — GKE 認証の事実上の必須

"Workload Identity Federation for GKE replaces the need to use Metadata concealment. The sensitive metadata protected by metadata concealment is also protected by Workload Identity Federation." 公式↗
Pod KSA: my-ksa ① トークン要求 GKE Metadata Server (DaemonSet) ② JWT 取得 Security Token Service (STS) ③ Federated Token Google Cloud API Workload Identity Pool PROJECT_ID.svc.id.goog GKE Workload Identity の認証フロー KSA → Federated Token → GCP API(鍵レス)
図5: Workload Identity の認証フロー — サービスアカウントキー不要
  1. Pod が KSA(Kubernetes Service Account)を使って GKE Metadata Server にトークンを要求
  2. Metadata Server が K8s API Server に JWT を要求し取得
  3. JWT を Security Token Service に渡し、Federated Token に交換
  4. Federated Token で GCP API を呼び出し(IAM 権限はバインディング済み)

9.4 Cluster Autoscaler と Node Auto-Provisioning (NAP)

機能役割使い分け
HPA (Horizontal Pod Autoscaler) Pod 数を増減 CPU / メモリ / カスタムメトリクスで Pod スケール
VPA (Vertical Pod Autoscaler) Pod の resources を増減 適正なリソース要求を自動推定
Cluster Autoscaler ノード数を増減 HPA で Pod 増えてもノードが足りないとき自動追加
Node Auto-Provisioning (NAP) 新しいノードプールを自動作成 未知の workload に最適なマシン形状で対応

9.5 Cluster Upgrade 戦略 — Surge Upgrades

💡 Surge Upgrade の動作 maxSurge=1, maxUnavailable=0 なら:1 つ新ノードを追加 → Pod 退避 → 古ノード削除を順次。
maxSurge=3, maxUnavailable=0 なら 3 並列で実施 → 早いが Quota 消費大。
🎯 試験での出題パターン(GKE 詳細) ・「本番 GKE の HA 要件」→ Regional Cluster + Regional Persistent Disk
・「Pod から Cloud SQL に鍵レスでアクセス」→ Workload Identity
・「Pod が急増したらノードも増やす」→ HPA + Cluster Autoscaler
・「GPU Pod のスケジューリングノードを動的作成」→ Node Auto-Provisioning

10GKE Enterprise (Anthos) — マルチクラスタ・マルチクラウド統制

GKE Enterprise(旧称 Anthos)は、GCP / オンプレ / AWS / Azure にまたがる K8s クラスタを一元管理するプラットフォーム。マルチクラウド時代の運用統制を実現します。

10.1 構成要素

Fleet マルチクラスタ集約 GKE on Google Cloud GKE on AWS Multi-Cloud GKE on Azure Multi-Cloud GDC software VMware / Bare metal Anthos Service Mesh Istio ベース、サイドカー注入 Config Management GitOps / Policy Controller Connect Gateway 外部クラスタへ kubectl 中継 GKE Enterprise = Fleet + マルチクラスタ + メッシュ + GitOps
図6: Anthos / GKE Enterprise のアーキテクチャ

10.2 各機能の役割

🎯 Fleet

複数の GKE クラスタを「論理グループ」として束ねる。Fleet 内のクラスタは同じ Namespace 等を共有。マルチクラスタ Ingress や Service Mesh のスコープになる。

🕸️ Anthos Service Mesh (ASM)

Istio ベースの mTLS / トラフィック制御 / 観測性。Pod にサイドカー(Envoy)注入。サービス間通信の暗号化と認可を自動化。

📜 Anthos Config Management (ACM)

Config Sync(GitOps)+ Policy Controller(OPA / Gatekeeper ベース)。Git リポジトリを唯一の真実源として全クラスタに manifest 配布。

🔗 Connect Gateway

オンプレ / マルチクラウドのクラスタに、外部 IP 不要で kubectl アクセス。中央化された認証・監査が可能。

🏢 GDC software for VMware

オンプレ VMware 上に GKE と同じ API のクラスタを構築。GCP コンソールから一元管理。

🔧 GDC software for Bare Metal

ベアメタルサーバー上に GKE 互換 K8s を直接インストール。エッジ / 製造業の物理デバイス向け。

🎯 試験での出題パターン(GKE Enterprise) ・「オンプレと GKE で同じ K8s API」→ GDC software for VMware / Bare Metal
・「複数クラスタの設定を Git で統一」→ Anthos Config Management
・「サービス間通信を mTLS 強制」→ Anthos Service Mesh
・「外部 IP なしの kubectl」→ Connect Gateway

11Cloud Run vs Cloud Run functions — コンテナ or 関数

"Cloud Run is a fully managed application platform... A service can rapidly scale out to one thousand instances." 公式↗

11.1 Cloud Run の 3 種類のリソース

Cloud Run Services

HTTP リクエスト処理。HTTPS endpoint 自動付与。0→1000 インスタンスへスケール。リクエストベース課金。

最も一般的

Cloud Run Jobs

バッチ / スクリプト実行。完了まで走る。並列タスク化可能。Cloud Scheduler でスケジュール起動。

バッチ処理

Cloud Run Worker Pools

継続的バックグラウンド処理。Kafka / Pub/Sub プル型。HTTP endpoint なし。Direct VPC ingress/egress 対応。

プル型ワーカー

11.2 Cloud Run の仕様

最大インスタンス数
1000 / リビジョン(クォータ申請で拡張可)
最大リクエスト時間
60 分(HTTP)、Job は完了まで
並列度 (concurrency)
1 〜 1000 / インスタンス(既定 80)
CPU / メモリ
最大 8 vCPU / 32 GiB(一部リージョン)
コンテナイメージ
Artifact Registry / Container Registry / 任意の Docker レジストリ
必須要件
TCP ポート(環境変数 PORT)で HTTP リッスン、ステートレス(メモリ FS 揮発)
SLA
99.95% (Cloud Run Services)

11.3 Cloud Run functions(旧 Cloud Functions)

📝 ブランド再編 旧 Cloud Functions 2nd gen は 「Cloud Run functions」にリブランド。 内部は Cloud Run 上で動作。1st gen は legacy 扱いだが、依然サポート対象。
項目Cloud Functions 1st genCloud Run functions (旧 2nd gen)
基盤独自Cloud Run
最大実行時間9 分(HTTP)、9 分(イベント)60 分
並列度 / インスタンス1 リクエスト1 〜 1000 同時可
最大インスタンス30001000+ (Cloud Run 同等)
メモリ上限8 GB32 GiB
トリガーHTTP / Pub/Sub / Storage / Firestore / etc.HTTP / Eventarc 経由で 90+ ソース
料金単位呼び出し + GB-sec + GHz-sec呼び出し + リクエスト時間 + リソース
推奨非推奨(新規)推奨

11.4 Direct VPC Egress — VPC Connector 不要

従来: Serverless VPC Connector

  • 専用 VM プールを VPC 内に作成
  • 各 VM が NAT / プロキシ役
  • 追加コスト + スループット上限あり
  • レイテンシ追加

新: Direct VPC Egress(推奨)

  • Cloud Run インスタンスに直接 VPC IP 割当
  • 追加 VM 不要
  • 低レイテンシ、低コスト
  • サブネットの IP を消費する点に注意
🎯 試験での出題パターン(Cloud Run) ・「複数 API + 自動 HTTPS」→ Cloud Run Services
・「Cloud Scheduler から夜間バッチ」→ Cloud Run Jobs
・「VPC 内の Cloud SQL に Cloud Run から接続」→ Direct VPC Egress
・「画像アップロードでサムネ生成(1 関数)」→ Cloud Run functions

12Cloud Run コールドスタート対策 — SLA を守る設計

"Cloud Run minimizes cold starts... requests will be queued for up to 10 seconds or 3.5x the estimated cold start time, whichever is higher." 公式↗

12.1 コールドスタートが発生する条件

  1. スケールゼロから初回リクエスト: 最も典型的。コンテナのプル + 起動 + アプリ初期化。
  2. 急激なトラフィック増: 既存インスタンスで捌けないとき、新規インスタンス起動。
  3. リビジョン更新後: 新リビジョンの最初のリクエスト。
  4. 15 分のアイドルタイムアウト後: アイドルで削除されたインスタンスが再起動。

12.2 コールドスタート対策 4 種

1
Min instances ≥ 1

常時最低 1 個のインスタンスを保持。0→1 のコールドスタートを排除。追加料金あり(アイドル時間も課金)。

2
Startup CPU Boost

起動時のみ CPU を一時的にブースト。アプリ初期化が早くなる。コスト変動小。

3
CPU Always Allocated

リクエスト処理中以外も CPU 保持。バックグラウンドタスク向け。リクエストベース課金は不可になり、インスタンス時間課金に切替。

4
軽量コンテナ

イメージサイズ縮小、起動処理高速化(lazy init)。Distroless / scratch ベース推奨。

12.3 コンテナのライフサイクル

①リクエスト到達 HTTPS endpoint ②イメージプル Artifact Registry ③コンテナ起動 PORT リッスン待ち ④アプリ初期化 DI / DB 接続等 ⑤リクエスト処理 レスポンス返却 ⏱ コールドスタート(数百 ms 〜 数秒) アイドル最大 15 分 超えると削除 Cloud Run のリクエスト→処理シーケンス
図7: Cloud Run のリクエスト処理シーケンスとコールドスタート区間

12.4 SLA 厳守要件の設計パターン

🚨 アンチパターン

  • min instances = 0 + SLA 99.95% 約束
  • 重いイメージ(数 GB の base image)
  • 起動時に大量の SaaS 接続を同期実行
  • Startup CPU Boost 未設定

✅ ベストプラクティス

  • min instances ≥ 1
  • Distroless / scratch ベースの軽量コンテナ
  • 遅延初期化(Lazy DI、必要時に接続)
  • Startup CPU Boost ON
  • 並列度を上げて 1 インスタンスで複数リクエスト処理
🎯 試験での出題パターン(Cold Start) ・「Cloud Run の初回レイテンシを最小化」→ Min instances ≥ 1 + Startup CPU Boost
・「バックグラウンド処理が完了するまで CPU 必要」→ CPU Always Allocated
・「コスト最優先、たまにしか呼ばれない」→ min instances = 0(コールドスタート許容)

13App Engine — Standard vs Flexible とレガシー位置づけ

"We recommend new Google Cloud users use Cloud Run as the preferred alternative over App Engine." 公式↗

13.1 Standard vs Flexible 比較

項目Standard 環境Flexible 環境
サポート言語Python / Java / Node.js / Go / PHP / Ruby(固定バージョン)任意(カスタム Docker)
起動時間数秒数分
スケールゼロ対応(0→自動)非対応(最小 1 インスタンス)
最大タイムアウト10 分(auto)/ 24 時間(manual)60 分
WebSocket非対応対応
SSH ログイン不可
カスタムバイナリ不可可(Docker)
料金インスタンス時間(無料枠あり)VM + ヘルスチェック

13.2 新規プロジェクトでの判断

🚨 公式が Cloud Run を推奨 新規 GCP ユーザーは App Engine ではなく Cloud Run を選ぶべき(公式ドキュメント明言)。 Cloud Run は GPU 対応、より柔軟な料金、より速い起動など、App Engine の優位性を上書きしている。
⚠️ App Engine を選ぶべき残された理由
  • 既存の App Engine Standard 資産(10 年超)の運用継続
  • app.yaml ベースのシンプル設定が好み
  • Memcache、Task Queue(Push)、Datastore とのネイティブ統合に強く依存
上記に当てはまらないならCloud Run に統一
🎯 試験での出題パターン(App Engine) ・「新規プロジェクトのサーバーレス Web」→ Cloud Run(App Engine ではなく)
・「既存 GAE Standard アプリの大量 Memcache 利用」→ App Engine 継続 または Memorystore へ移行
・「WebSocket + 長時間接続」→ Cloud Run(GAE Flexible でもよいが)

14VMware Engine (GCVE) — リフトアンドシフトの最終手段

"Google Cloud VMware Engine is a fully managed service that lets you run the VMware platform in Google Cloud." 公式↗

14.1 GCVE が解決する問題

14.2 アーキテクチャ

基盤
物理ベアメタル専有(顧客プライベートクラウド)
提供 VMware コンポーネント
vSphere / vCenter / vSAN / NSX-T(フルスタック)
運用責任
Google がパッチ / ライフサイクル / ハードウェア管理。顧客は VM レイヤーのみ責任
ネットワーク
専用 VPC と Peering 接続、Interconnect 接続可
移行ツール
VMware HCX(L2 Network Extension + Live vMotion)
SLA
99.99%(ノード冗長構成時)

14.3 ハイブリッド戦略

① オンプレ撤退(DC 廃止)

オンプレ vSphere → GCVE へ HCX で移行。アプリ変更ゼロで DC 撤退。

② DR バックアップ

オンプレを本番、GCVE を DR サイト。HCX 経由でレプリケーション。

③ オンデマンド容量拡張

オンプレ + GCVE のハイブリッド。繁忙期は GCVE で拡張。

14.4 注意点とコスト

⚠️ GCVE の注意
  • ノード単位の課金(最小 3 ノード推奨、SLA で 6 以上)。コスト規模感は GCE より高め。
  • CUD(1年 / 3年)で大幅割引(〜50% 程度)
  • VMware ライセンスは GCVE 料金に内包(追加調達不要)
  • VM 単位の細かいオートスケールは GCE / GKE ほど柔軟ではない
🎯 試験での出題パターン(VMware Engine) ・「VMware から最短で GCP 移行、アプリ無変更」→ VMware Engine + HCX
・「Oracle RAC のような特殊 VMware 構成」→ VMware Engine
・「オンプレ DC 廃止+運用継続性」→ VMware Engine

15試験頻出パターン — ケーススタディ別の推奨構成

📦 EHR Healthcare 型(リフトアンドシフト + モダナイズ)

  • 既存 VMware → GCVE または GCE
  • 新規マイクロサービス → GKE Autopilot
  • イベント駆動の通知 → Cloud Run functions

🎮 Mountkirk Games 型(モバイル / グローバルゲーム)

  • ゲームサーバー → GKE Standard(カスタムスケジューラ)
  • API → Cloud Run
  • マッチメイキング → MIG + Cloud Spanner

🚚 Helicopter Racing League 型(リアルタイム + ML)

  • ストリーミング推論 → GKE + GPU ノード(A3)
  • 動画配信 → Cloud Run + CDN

🏦 TerramEarth 型(IoT / バッチ)

  • センサー受信 → Pub/Sub + Cloud Run functions
  • バッチ分析 → Spot VM の MIG + BigQuery

15.1 「コスト最小化」と書かれたら?

  1. Spot VM が使えるか?(中断耐性ある?)
  2. Cloud Run min instances = 0 が使えるか?(スケールゼロ可?)
  3. E2 マシン + CUD(1年 / 3年) の組合せ
  4. 不要時間帯は Schedule ベースで停止

15.2 「運用工数最小化」と書かれたら?

  1. サーバーレス優先: Cloud Run / Cloud Run functions
  2. K8s が必要なら GKE Autopilot(Standard ではない)
  3. VM が必要なら MIG + Auto-healing

15.3 「SLA 99.99% / 高可用性」と書かれたら?

  1. Regional MIG または Regional GKE
  2. Cloud Run は min instances ≥ 1 + 複数リージョン
  3. Spot VM は 使わない(SLA 対象外)
  4. VMware Engine は 6 ノード以上

16アンチパターンと注意点 — よくある設計ミス

🚨 #1: Spot VM でステートフル DB

問題: いつでも消える VM に PostgreSQL を載せ、データ喪失。
正解: DB は Cloud SQL / Spanner、Spot は学習・バッチ専用。

🚨 #2: GKE で SA キーをマウント

問題: Secret に JSON キー → 漏洩リスク。
正解: Workload Identity 一択。

🚨 #3: Cloud Run でファイル永続化

問題: ローカル FS に保存 → インスタンス削除で消失。
正解: GCS / Filestore / Cloud SQL に外出し。

🚨 #4: Zonal MIG で本番運用

問題: ゾーン障害で全 VM 喪失。
正解: Regional MIG でゾーン分散。

🚨 #5: GKE Standard でクラスタアップグレード手動

問題: K8s バージョン放置で脆弱性 / EOL。
正解: リリースチャンネル(Regular)登録で自動更新。

🚨 #6: Cloud Run の SLA を min=0 で約束

問題: コールドスタートで初回 5 秒、SLA 違反。
正解: min instances ≥ 1 + Startup CPU Boost。

🚨 #7: 新規プロジェクトで App Engine

問題: 公式が Cloud Run 推奨に方針転換。
正解: 新規は Cloud Run。GAE は既存資産のみ。

🚨 #8: MIG の Auto-healing 未設定

問題: アプリ凍結時に LB 切替だけで終わり、VM が「ゾンビ」化。
正解: Auto-healing ヘルスチェックを別途設定。

🚨 #9: Sole Tenant Nodes を低稼働で運用

問題: ノード単位課金で、空き容量を放置するとコスト激増。
正解: 容量を使い切る計画、または通常 GCE。

🚨 #10: GKE Autopilot で hostNetwork 想定

問題: Privileged が原則禁止。
正解: 特殊機能必要なら Standard へ。

17コンピュート選定マトリクス — 包括早見表

要件 GCE GKE Std GKE Auto Cloud Run CR functions GAE Std GAE Flex GCVE
OS / カーネル制御××××
K8s API××××××
スケールゼロ××××
0→1000 急スケール×
運用工数最低最低
コスト柔軟性最高最高
GPU / TPU×××
WebSocket××
最大実行時間無制限無制限無制限60 分60 分10 分60 分無制限
VPC 直接接続
SLA99.9%99.95% (R)99.95%99.95%99.95%99.95%99.95%99.99%

17.1 ワークロード別の推奨

ワークロード推奨代替
静的サイトCloud Storage + CDNCloud Run
HTTP API(マイクロサービス)Cloud RunGKE Autopilot
長時間バッチ(数時間)Cloud Run Jobs / GCE SpotGKE Job
定期実行(cron)Cloud Scheduler + Cloud Run functionsCloud Scheduler + Cloud Run Jobs
イベント駆動(GCS / Pub/Sub)Cloud Run functionsCloud Run + Eventarc
WebSocket / gRPC ストリーミングCloud RunGKE
SAP HANA / 大規模 OLAPGCE M シリーズBigQuery
GPU 機械学習Vertex AIGCE A シリーズ + Spot
レガシー Windows アプリGCE Windows + BYOLSole Tenant Nodes
VMware 既存資産VMware EngineGCE + Migrate to VMs

18クォータと制限の一覧 — 数値早見表

18.1 Compute Engine

項目既定上限備考
vCPU / リージョン24申請で拡張可
Static External IP / リージョン8申請拡張可
PD 容量 / リージョン10 TBSSD は別枠
Local SSD / VM9 TB(24 × 375 GB)マシンタイプ依存
VM あたり最大メモリX4 = 32 TBM4 = 5.75 TB
Snapshot 数1000 / リージョン増分
SLA99.9% (single-zone)99.99% (multi-zone)

18.2 Spot VM

項目
割引率最大 91%
中断通知後の猶予最大 30 秒(best effort)
SLA対象外
Free Tier 適用不可
Live Migration不可
1 分未満で停止された場合VM 課金なし

18.3 MIG

項目
Zonal MIG 最大 VM 数1000
Regional MIG 最大 VM 数2000
MIG / プロジェクト1000
Autoscaler / プロジェクト1000

18.4 GKE

項目
クラスタ最大ノード数15,000 (private VPC)
ノードあたり Pod 数110(既定)/ 256 (max)
クラスタあたり Pod 数200,000
Workload Identity 同時接続/ノード500
SLAZonal 99.5%(CP)/ Regional 99.95%
Autopilot Pod SLA99.9%

18.5 Cloud Run

項目
最大 CPU / インスタンス8 vCPU
最大メモリ / インスタンス32 GiB
最大同時リクエスト / インスタンス1000(既定 80)
最大インスタンス / リビジョン1000(クォータ拡張可)
最大リクエスト時間60 分
アイドルタイムアウト15 分 (CPU) / 10 分 (GPU)
イメージサイズ最大32 GB(展開後)
SLA99.95%

18.6 App Engine

項目StandardFlexible
最大リクエスト時間(auto)10 分60 分
最大リクエスト時間(manual)24 時間60 分
スケールゼロ不可
SLA99.95%99.95%

18.7 VMware Engine

項目
最小ノード数3(SLA 適用は 6 以上)
SLA(3 ノード)99.9%
SLA(6+ ノード)99.99%
VMware ライセンス料金内包
CUD 割引1 年 / 3 年