Deep Dive: Compute
Google Cloud のコンピュート全領域を、公式ドキュメントベースで技術深掘り。 GCE / GKE / Cloud Run / Cloud Run functions / App Engine / VMware Engine の選定・設計・運用上の落とし穴を、PCA 試験の判断軸とともに整理します。
- 選定軸はステートとマネジメント度:ステートフル+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 | VM / OS / ディスク | MIG で自動 | VM 秒課金 | 高 |
| CaaS | GKE Standard | ノード + Pod | Cluster Autoscaler | ノード課金 | 中〜高 |
| CaaS | GKE Autopilot | Pod のみ | Pod 自動 | Pod リクエスト課金 | 中 |
| PaaS | Cloud Run | コンテナイメージ | 0→1000 / 秒 | リクエスト / インスタンス時間 | 低 |
| PaaS | App Engine Std | 言語ランタイム | 0→自動 | インスタンス時間 | 低 |
| FaaS | Cloud Run functions | 関数1個 | 0→自動 | 呼び出し + ms | 最低 |
| VMware | VMware Engine | vSphere クラスタ | 手動 / API | ノード時間 | 高(オンプレ同等) |
2コンピュート選定 完全フロー — 決定ツリー
PCA のケーススタディは、必ず「コンピュート選定」を内包します。 以下のフローを頭に焼き付けておくと、Q1 を 30 秒で正答候補に絞れます。
→ 既存 GAE 資産が大量にある場合のみ。新規は Cloud Run を選ぶ。
マシンファミリー選定(GCE 限定)
E2 は CPU バースト機能あり / 共有コアのため、安定した CPU を要求する用途には不向き。
・「マネージド 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 向け。
世代: 第 4 世代 = N4 / C4 / C4A / C4D
コンピュート最適化 C
HPC、ゲームサーバー、シングルスレッド性能が必要なワークロード。
H3 / H4D は HPC 専用(高クロック、密結合)
メモリ最適化 M
SAP HANA、インメモリ分析、大規模 OLAP。最大数 TB メモリ。
X4 = 最大 32 TB メモリ
アクセラレータ最適化 A
ML 学習 / 推論、CUDA、グラフィックス。GPU/TPU 搭載。
A4X = NVIDIA GB200 / A3 = H100, A2 = A100
ストレージ最適化 S
SQL / NoSQL / ベクトル DB。Local SSD 大容量。
フラッシュ最適化
📐 マシンタイプ命名規則 — 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 メモリほしい」といった非標準ニーズに対応。
- 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 起動時にアタッチ。 |
3.4 Live Migration と メンテナンスポリシー
Compute Engine はホストメンテナンス時、VM を別ホストへ無停止移行(Live Migration)できます。 これにより、計画メンテナンスでアプリが止まらないのが GCE の差別化ポイントです。
MIGRATE(デフォルト・Live Migration 実行)または TERMINATE(停止)。true。TERMINATE。TERMINATE + MIG の Auto-healing で代替する設計が必須。
onHostMaintenance=MIGRATE・「GPU 付きでメンテ時の挙動を制御」→
TERMINATE + automaticRestart=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 Server 上で
scheduling/preempted=TRUEがセット。アプリは metadata polling で検知可能。 - SIGTERM 送信: ACPI G2 Soft Off 経由で OS にシグナル。Linux なら
systemd終了プロセスが起動。 - グレースフル猶予: 公式は「best effort and up to 30 seconds」。確約されないため、30 秒「以内」と考える。
- SIGKILL: 強制停止。アプリは未完了処理をすべて失う。
- 状態遷移:
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 + 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 のシグナル種類
| シグナル | 適用例 | 注意 |
|---|---|---|
| CPU 利用率 | 汎用 Web、API | デフォルト 60%。低すぎると過剰スケール |
| LB Serving Capacity | HTTP(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 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
- LB Health Check: 不健全な VM への トラフィックを止めるだけ。VM は削除しない。
- MIG Auto-healing Health Check: 不健全な VM を 削除して再作成する。
・「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 コスト構造の特徴
・ノード上の 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 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 性能オーバーヘッド
・N2D / C3D は Live Migration もサポート(多くのケースで)
・暗号化処理は CPU 内で実施されるため、ホスト側に追加負荷なし
7.3 ユースケース
- 規制業界: PCI DSS、HIPAA、GDPR でメモリ内データ保護を要求される場合
- マルチパーティ計算: 複数組織がデータを共有せずに共同分析(例: 銀行間 AML 分析)
- 機密 ML: 学習データとモデルを完全に保護
- Confidential GKE Nodes: K8s 全体を Confidential 上で運用
・「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 課金モデルの違い
8.2 機能比較マトリクス
| 項目 | Standard | Autopilot |
|---|---|---|
| ノード管理 | 手動(自分でノードプール定義) | Google が完全管理 |
| 課金 | ノード時間 | Pod 要求のリソース時間 |
| SLA | コントロールプレーンのみ | Pod レベル SLA も付与 |
| 特権 Pod (privileged) | 許可 | 原則禁止(allowlist 必要) |
| hostNetwork / hostPID | 許可 | 禁止 |
| DaemonSet | 許可 | 制限あり |
| カスタムノード(OS / カーネル) | 許可 | 不可 |
| セキュリティ強化 | 手動 | デフォルト適用 |
| Workload Identity | 有効化必要 | デフォルト有効 |
| GPU / TPU | 可 | 可(ComputeClass 経由) |
| Pod packing 最適化 | 自分で | Google が自動 |
- privileged: true は禁止(Falco、Calico の一部機能、CNI 拡張など影響)
- hostNetwork: true 不可(ノードの IP を直接使う用途は使えない)
- ノードに SSH 不可(kubelet / containerd の挙動デバッグが制限)
- kernel module ロード不可(GPU ドライバなど特殊用途に注意)
8.3 選定基準
・「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(Kubernetes Service Account)を使って GKE Metadata Server にトークンを要求
- Metadata Server が K8s API Server に JWT を要求し取得
- JWT を Security Token Service に渡し、Federated Token に交換
- 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
maxSurge=1, maxUnavailable=0 なら:1 つ新ノードを追加 → Pod 退避 → 古ノード削除を順次。maxSurge=3, maxUnavailable=0 なら 3 並列で実施 → 早いが Quota 消費大。
・「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 構成要素
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 を直接インストール。エッジ / 製造業の物理デバイス向け。
・「複数クラスタの設定を 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 の仕様
PORT)で HTTP リッスン、ステートレス(メモリ FS 揮発)11.3 Cloud Run functions(旧 Cloud Functions)
| 項目 | Cloud Functions 1st gen | Cloud Run functions (旧 2nd gen) |
|---|---|---|
| 基盤 | 独自 | Cloud Run |
| 最大実行時間 | 9 分(HTTP)、9 分(イベント) | 60 分 |
| 並列度 / インスタンス | 1 リクエスト | 1 〜 1000 同時可 |
| 最大インスタンス | 3000 | 1000+ (Cloud Run 同等) |
| メモリ上限 | 8 GB | 32 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 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 コールドスタートが発生する条件
- スケールゼロから初回リクエスト: 最も典型的。コンテナのプル + 起動 + アプリ初期化。
- 急激なトラフィック増: 既存インスタンスで捌けないとき、新規インスタンス起動。
- リビジョン更新後: 新リビジョンの最初のリクエスト。
- 15 分のアイドルタイムアウト後: アイドルで削除されたインスタンスが再起動。
12.2 コールドスタート対策 4 種
Min instances ≥ 1
常時最低 1 個のインスタンスを保持。0→1 のコールドスタートを排除。追加料金あり(アイドル時間も課金)。
Startup CPU Boost
起動時のみ CPU を一時的にブースト。アプリ初期化が早くなる。コスト変動小。
CPU Always Allocated
リクエスト処理中以外も CPU 保持。バックグラウンドタスク向け。リクエストベース課金は不可になり、インスタンス時間課金に切替。
軽量コンテナ
イメージサイズ縮小、起動処理高速化(lazy init)。Distroless / scratch ベース推奨。
12.3 コンテナのライフサイクル
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 インスタンスで複数リクエスト処理
・「バックグラウンド処理が完了するまで 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 新規プロジェクトでの判断
- 既存の App Engine Standard 資産(10 年超)の運用継続
app.yamlベースのシンプル設定が好み- Memcache、Task Queue(Push)、Datastore とのネイティブ統合に強く依存
・「既存 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 が解決する問題
- VMware 資産の即時移行: vSphere / vSAN / NSX をそのまま GCP 上で稼働
- 運用継続性: 既存の vCenter / Tools / プロセスをそのまま利用
- 段階的モダナイズ: 移行後にコンテナ化等を段階的に実施
- DR / DC 廃止: オンプレ DC 撤退、DR サイトを GCP に集約
14.2 アーキテクチャ
14.3 ハイブリッド戦略
① オンプレ撤退(DC 廃止)
オンプレ vSphere → GCVE へ HCX で移行。アプリ変更ゼロで DC 撤退。
② DR バックアップ
オンプレを本番、GCVE を DR サイト。HCX 経由でレプリケーション。
③ オンデマンド容量拡張
オンプレ + GCVE のハイブリッド。繁忙期は GCVE で拡張。
14.4 注意点とコスト
- ノード単位の課金(最小 3 ノード推奨、SLA で 6 以上)。コスト規模感は GCE より高め。
- CUD(1年 / 3年)で大幅割引(〜50% 程度)
- VMware ライセンスは GCVE 料金に内包(追加調達不要)
- VM 単位の細かいオートスケールは GCE / GKE ほど柔軟ではない
・「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 「コスト最小化」と書かれたら?
- Spot VM が使えるか?(中断耐性ある?)
- Cloud Run min instances = 0 が使えるか?(スケールゼロ可?)
- E2 マシン + CUD(1年 / 3年) の組合せ
- 不要時間帯は Schedule ベースで停止
15.2 「運用工数最小化」と書かれたら?
- サーバーレス優先: Cloud Run / Cloud Run functions
- K8s が必要なら GKE Autopilot(Standard ではない)
- VM が必要なら MIG + Auto-healing
15.3 「SLA 99.99% / 高可用性」と書かれたら?
- Regional MIG または Regional GKE
- Cloud Run は min instances ≥ 1 + 複数リージョン
- Spot VM は 使わない(SLA 対象外)
- 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 直接接続 | ◎ | ◎ | ◎ | ○ | ○ | △ | ○ | ◎ |
| SLA | 99.9% | 99.95% (R) | 99.95% | 99.95% | 99.95% | 99.95% | 99.95% | 99.99% |
17.1 ワークロード別の推奨
| ワークロード | 推奨 | 代替 |
|---|---|---|
| 静的サイト | Cloud Storage + CDN | Cloud Run |
| HTTP API(マイクロサービス) | Cloud Run | GKE Autopilot |
| 長時間バッチ(数時間) | Cloud Run Jobs / GCE Spot | GKE Job |
| 定期実行(cron) | Cloud Scheduler + Cloud Run functions | Cloud Scheduler + Cloud Run Jobs |
| イベント駆動(GCS / Pub/Sub) | Cloud Run functions | Cloud Run + Eventarc |
| WebSocket / gRPC ストリーミング | Cloud Run | GKE |
| SAP HANA / 大規模 OLAP | GCE M シリーズ | BigQuery |
| GPU 機械学習 | Vertex AI | GCE A シリーズ + Spot |
| レガシー Windows アプリ | GCE Windows + BYOL | Sole Tenant Nodes |
| VMware 既存資産 | VMware Engine | GCE + Migrate to VMs |
18クォータと制限の一覧 — 数値早見表
18.1 Compute Engine
| 項目 | 既定上限 | 備考 |
|---|---|---|
| vCPU / リージョン | 24 | 申請で拡張可 |
| Static External IP / リージョン | 8 | 申請拡張可 |
| PD 容量 / リージョン | 10 TB | SSD は別枠 |
| Local SSD / VM | 9 TB(24 × 375 GB) | マシンタイプ依存 |
| VM あたり最大メモリ | X4 = 32 TB | M4 = 5.75 TB |
| Snapshot 数 | 1000 / リージョン | 増分 |
| SLA | 99.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 |
| SLA | Zonal 99.5%(CP)/ Regional 99.95% |
| Autopilot Pod SLA | 99.9% |
18.5 Cloud Run
| 項目 | 値 |
|---|---|
| 最大 CPU / インスタンス | 8 vCPU |
| 最大メモリ / インスタンス | 32 GiB |
| 最大同時リクエスト / インスタンス | 1000(既定 80) |
| 最大インスタンス / リビジョン | 1000(クォータ拡張可) |
| 最大リクエスト時間 | 60 分 |
| アイドルタイムアウト | 15 分 (CPU) / 10 分 (GPU) |
| イメージサイズ最大 | 32 GB(展開後) |
| SLA | 99.95% |
18.6 App Engine
| 項目 | Standard | Flexible |
|---|---|---|
| 最大リクエスト時間(auto) | 10 分 | 60 分 |
| 最大リクエスト時間(manual) | 24 時間 | 60 分 |
| スケールゼロ | 可 | 不可 |
| SLA | 99.95% | 99.95% |
18.7 VMware Engine
| 項目 | 値 |
|---|---|
| 最小ノード数 | 3(SLA 適用は 6 以上) |
| SLA(3 ノード) | 99.9% |
| SLA(6+ ノード) | 99.99% |
| VMware ライセンス | 料金内包 |
| CUD 割引 | 1 年 / 3 年 |