セクション 5:ソリューションのデプロイと実装
クラウドアーキトの設計を 実装に落とす ためのツール群。CI/CD・Apigee・Terraform・gcloud SDK・Cloud Shell / Code / Workstations・Cloud Emulators・Gemini AI 支援が学習の中心です。「どのツールで何ができるか」を要件から即答できる力が問われます。
📊 出題比重 ~12.5%
⚙️ Cloud Build / Deploy / Apigee
🏗️ Terraform / Config Connector
💻 Cloud Shell / Code / Workstations
🤖 Gemini Code / Cloud Assist
🔑 TL;DR(このセクションの核)
- CI/CD は Cloud Build → Artifact Registry → Cloud Deploy の 3 点セットが定番。Binary Authorization で本番ガードレール
- API 管理は要件で選定。フルライフサイクル + ポータル → Apigee、サーバーレス軽量 → API Gateway、gRPC/OpenAPI → Cloud Endpoints
- IaC の標準は Terraform。K8s ネイティブ + GitOps なら Config Connector。Deployment Manager はレガシー
- DB 移行は DMS(最小ダウン) と Datastream(CDC ストリーミング)。VM コンテナ化は Migrate to Containers、移行計画は Migration Center
- テスト時の課金回避は Cloud Emulators(Bigtable / Spanner / Pub/Sub / Firestore の 4 つだけ)
- AI 支援は場面で使い分け。IDE → Gemini Code Assist、コンソール → Gemini Cloud Assist
- 認証は ADC + Workload Identity (Federation) が新基準。SA キー(JSON)は 避ける
🎯 学習目標チェックリスト
5.1 ソリューションとアプリケーションのデプロイ・運用支援
CI/CD・API 管理・テスト・移行・IaC を扱う領域。「正しいツールを正しい場面で」が試験頻出の判断軸です。
📘 ① CI/CD パイプライン全体像
GCP の CI/CD は マネージドサービス 3 つの組合せが定番。役割を混同しないことが試験対策の最初の壁。
コード変更 (git push)
↓
Cloud Build (CI: ビルド・テスト・コンテナ化)
↓
Artifact Registry (成果物保管 / 脆弱性スキャン)
↓
Cloud Deploy (CD: dev → staging → prod)
↓
GKE / Cloud Run / Compute Engine (実行)
↓
Cloud Monitoring / Logging (観測)
| 用語 | 意味 | 代表サービス |
| CI(継続的インテグレーション) | コード変更を自動ビルド・テスト | Cloud Build、GitHub Actions、GitLab CI |
| CD(継続的デリバリ) | 検証済みアーティファクトを各環境に配布 | Cloud Deploy、Argo CD、Spinnaker |
| デプロイ | 実行環境に配置 | Cloud Run / GKE / GCE |
Cloud Build(CI 担当)
YAML(cloudbuild.yaml)で ビルドステップ を定義する、フルマネージドの CI サービス。
- ステップごとにコンテナを動かす(任意のツールを実行可能)
- ソースは Cloud Source Repositories / GitHub / GitLab / Bitbucket
- Cloud Build トリガーで Push / PR / タグで自動起動
- Private Pool でプライベートネットワーク内ビルド
- Secret Manager 連携、Workload Identity Federation 認証
# cloudbuild.yaml の例
steps:
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'us-docker.pkg.dev/$PROJECT_ID/repo/app:$SHORT_SHA', '.']
- name: 'gcr.io/cloud-builders/docker'
args: ['push', 'us-docker.pkg.dev/$PROJECT_ID/repo/app:$SHORT_SHA']
images:
- 'us-docker.pkg.dev/$PROJECT_ID/repo/app:$SHORT_SHA'
Artifact Registry(成果物リポジトリ)
コンテナイメージ / OS パッケージ / 言語パッケージ(Maven / npm / Python / Go)を保管する 次世代リポジトリ。
| 項目 | 内容 |
| 旧 | Container Registry(gcr.io) |
| 新 | Artifact Registry(*-docker.pkg.dev) |
| サポート形式 | Docker / OCI / Maven / npm / Python / Go / Apt / Yum |
| 利点 | リージョナル、IAM 統合、脆弱性スキャン、リモートリポ、仮想リポ |
⚠️ Container Registry は廃止予定
新規はすべて Artifact Registry を使う。既存の Container Registry も Artifact Registry への移行が推奨されている。
Cloud Deploy(CD 担当)
GitOps スタイルの 進行制御マネージドサービス。delivery-pipeline.yaml で dev → staging → prod の進行を宣言。
- Promotion(環境間昇進)と Rollback(即時切戻し)
- Cloud Run / GKE / Anthos / Run for Anthos に対応
- Canary / Standard / Custom デプロイ戦略
- Verification ステップでヘルスチェック組込み
- Approval で本番手前の承認ゲート
- 監査履歴を自動保存
📋 Cloud Deploy の delivery-pipeline.yaml 例(クリックで展開)
apiVersion: deploy.cloud.google.com/v1
kind: DeliveryPipeline
metadata:
name: app-pipeline
serialPipeline:
stages:
- targetId: dev
profiles: [dev]
- targetId: staging
profiles: [staging]
strategy:
canary:
runtimeConfig:
cloudRun:
automaticTrafficControl: true
canaryDeployment:
percentages: [10, 50]
verify: true
- targetId: prod
profiles: [prod]
strategy:
canary:
canaryDeployment:
percentages: [5, 25, 50]
verify: true
Binary Authorization の流れ
1. イメージビルド (Cloud Build)
2. 脆弱性スキャン (Container Analysis)
3. 検証ポリシー通過 → Attestor が署名
4. Cloud Deploy / GKE / Cloud Run が署名検証
5. 検証 OK のみデプロイを許可
📘 ② デプロイ戦略
4 つの主要戦略を 用途とリスクで使い分け。試験頻出は「即時切戻し → Blue-Green」「段階リリース → Canary」。
| 戦略 | 内容 | リスク | 適用例 |
| Rolling Update | 順次置換 | 中 | 一般的な Web アプリ |
| Blue-Green | 旧(Blue)と新(Green)を並走、切替 | 低 | 厳密な切戻しが必要 |
| Canary | 一部トラフィックだけ新版に流す | 低 | ユーザー影響を早期検知 |
| Recreate | 全停止 → 新版起動 | 高 | ステートフル少数 |
[Rolling]
旧旧旧旧旧 → 旧旧旧旧新 → 旧旧旧新新 → 旧旧新新新 → 旧新新新新 → 新新新新新
[Blue-Green]
Blue: 旧旧旧旧旧 (active) Blue: 旧旧旧旧旧 (idle)
Green: ----- (待機) → Green: 新新新新新 (active)
LB を Blue → Green に切替
[Canary]
旧旧旧旧旧 (95%) + 新 (5%) → 旧旧旧旧 (80%) + 新新 (20%) → 新新新新新 (100%)
プラットフォーム別の Blue-Green 実装
| プラットフォーム | 実装 |
| Cloud Run | --no-traffic で新リビジョン → gcloud run services update-traffic --to-revisions=NEW=100 |
| GKE | 2 つの Deployment を並走、Service のセレクタを切替 |
| Compute Engine | 2 つの MIG、Load Balancer のバックエンド入替 |
| App Engine | 2 バージョン並走、gcloud app services set-traffic |
プラットフォーム別の Canary 実装
| プラットフォーム | 実装 |
| Cloud Run | --traffic NEW=10,OLD=90、徐々に上げる |
| GKE | Istio / Anthos Service Mesh で 5%/25%/50%/100% |
| GKE | Argo Rollouts で自動進行 |
| App Engine | traffic-split で割合変更 |
Feature Flag — 「コード変更なしの機能切替」
コードはデプロイ済みだが、機能を 動的に on/off する仕組み。
| ツール | 概要 |
| Firebase Remote Config | モバイル / Web 向け |
| 外部 App Config | LaunchDarkly、Split、Unleash 等 |
🔑 Canary vs A/B テスト
Canary はデプロイの安全性を狙う短期検証(旧版 vs 新版・同機能)。A/B テストは機能の効果測定を狙う長期実験(機能 A vs 機能 B)。混同しない。
📘 ③ Apigee と API 管理
API を多数公開すると、認証 / レート制限 / バージョニング / 課金 / 監視 を一元管理しないと運用が破綻します。これを担うのが API Management。
シンプル ←───────────────→ 高機能
Cloud Endpoints API Gateway Apigee
- gRPC - サーバーレス - 開発者ポータル
- 軽量 - Cloud Run - 課金 / マネタイズ
- Cloud Functions - 詳細ポリシー
- フルライフサイクル
| サービス | 用途 | 特徴 |
| Apigee | フルライフサイクル API 管理 | エンタープライズ向け、開発者ポータル、マネタイズ、複雑なポリシー |
| API Gateway | サーバーレス API ゲートウェイ | 軽量、Cloud Run/Functions と統合、サーバーレス向け |
| Cloud Endpoints | gRPC/OpenAPI ベースの API 管理 | 軽量、GKE/GCE/App Engine と統合(やや古い) |
Apigee のエディション
| エディション | 用途 |
| Apigee X(SaaS) | フルマネージド、Google 運用 |
| Apigee Hybrid | コントロールプレーンは Google、ランタイムはオンプレ/他クラウド GKE |
Apigee の主要コンセプト
┌─────────────────────────────┐
│ Apigee Edge / X │
│ ┌─ API Proxy(前段プロキシ)│
│ │ └─ Policy(処理パイプライン) │
│ │ - OAuthV2 / VerifyAPIKey │
│ │ - VerifyJWT / GenerateJWT │
│ │ - Quota / SpikeArrest │
│ │ - AssignMessage │
│ │ - ResponseCache │
│ │ - ServiceCallout │
│ │ - MessageLogging │
│ │ │
│ ├─ Product(複数 Proxy をパッケージ)│
│ ├─ Developer / App(API キー単位) │
│ └─ Environment(dev/stg/prod) │
└─────────────────────────────┘
↓
バックエンド API
(Cloud Run / GKE / オンプレ / 他クラウド)
| コンセプト | 内容 |
| API Proxy | バックエンド API の前段プロキシ |
| Policy | プロキシで実行する処理(認証、変換、レート制限など) |
| Product | API を パッケージ化(複数 Proxy をまとめる) |
| Developer / App | API キーを受け取る単位 |
| Environment | dev / staging / prod の論理環境 |
| Flow | リクエスト/レスポンスの処理パイプライン |
代表的なポリシー
| ポリシー | 用途 |
| OAuthV2 / VerifyAPIKey | 認証 |
| VerifyJWT / GenerateJWT | JWT 検証・発行 |
| Quota | レート制限(呼出回数) |
| SpikeArrest | 突発スパイク防御 |
| AssignMessage / XML/JSON Transform | リクエスト変換 |
| ResponseCache | キャッシュ |
| ServiceCallout | 別 API 呼出 |
| MessageLogging | ロギング |
Apigee の典型ユースケース
①B2B / B2C API のマネタイズ
利用量に応じた課金プランを Apigee Analytics で実現。
②レガシー SOAP/REST のラッピング
既存システムをモダン API に変換して公開。
③マルチクラウド API 統合
GCP / AWS / Azure の API を統一ゲートウェイ経由で公開。
④マイクロサービス公開
外部公開用の API ゲートウェイ層として配置。
📘 ④ テストと Cloud Emulators
△
/ \
/ E2E \ ← 少数・遅い・本物に近い
/------\
/ Integ. \ ← 中程度
/----------\
/ 単体テスト \ ← 多数・速い・モック中心
/---------------\
| 種別 | 内容 | 代表ツール |
| 単体テスト | 関数・クラス単位 | JUnit、pytest、Jest、Go test |
| 統合テスト | 複数コンポーネント連携 | Testcontainers、Cloud Emulators |
| E2E テスト | 本番に近い環境で全体動作 | Cypress、Playwright、Selenium |
| 負荷テスト | 想定負荷で性能確認 | Locust、JMeter、k6、Gatling |
| ストレステスト | 限界を超えた負荷で耐性確認 | 同上 |
| カオス試験 | 故障注入で回復力確認 | Chaos Toolkit、Litmus |
| モバイル | 実機・仮想デバイス | Firebase Test Lab |
Cloud Emulators — 課金回避のローカルテスト
Bigtable / Spanner / Pub/Sub / Firestore はローカル実行できるエミュレータを提供。
gcloud emulators bigtable start --host-port=localhost:8086
gcloud emulators spanner start --host-port=localhost:9010
gcloud emulators pubsub start --host-port=localhost:8085
gcloud emulators firestore start --host-port=localhost:8080
💡 Emulator 対応サービスは 4 つだけ
BigQuery / Cloud SQL / Memorystore などはエミュレータなし。テスト用には実環境のテストインスタンスを使う。
| サービス | 制約 |
| Bigtable | 永続化なし(停止で消える)、Replication 非対応 |
| Spanner | 単一インスタンス、複雑な機能の一部非対応 |
| Pub/Sub | サブスクリプション設定は維持されないことがある |
| Firestore | セキュリティルールテスト可能、Composite Index 制限 |
📘 ⑤ データ・システム移行ツール
「ソースとターゲットの組合せ」でツールが決まる。試験頻出。
| サービス | 用途 |
| Database Migration Service (DMS) | DB 移行(オンプレ→Cloud SQL/AlloyDB/Spanner、最小ダウン) |
| Datastream | CDC(変更データキャプチャ)でリアルタイム同期 |
| Migrate to Containers (M2C) | VM ワークロードをコンテナ化して GKE/Cloud Run へ |
| Migrate for Compute Engine (M4CE) | VMware/AWS/Azure VM を Compute Engine へ |
| Storage Transfer Service | GCS 間 / S3 / Azure Blob / HTTP からデータ転送 |
| Transfer Appliance | 物理デバイス郵送による大量データ移行(>100TB) |
| BigQuery Data Transfer Service | SaaS / 他 DWH から BigQuery にデータ取込 |
| Migration Center | 移行アセスメント・計画統合プラットフォーム(旧 Stratozone) |
Database Migration Service(DMS)の流れ
1. ソース DB を登録(オンプレ / 他クラウド / 別 GCP)
↓
2. 接続プロファイル作成(IP/Interconnect/VPN/Reverse SSH Tunnel)
↓
3. 移行ジョブ起動(フルロード + CDC レプリケーション)
↓
4. 検証(データ整合性、ラグ)
↓
5. カットオーバー(読み書きを Cloud SQL に切替)
↓
ダウンタイムは数秒〜数分のみ
| ソース | ターゲット |
| MySQL | Cloud SQL for MySQL |
| PostgreSQL | Cloud SQL for PostgreSQL / AlloyDB |
| SQL Server | Cloud SQL for SQL Server |
| Oracle | AlloyDB / Cloud SQL for PostgreSQL |
Datastream(CDC ストリーミング)
- 用途: 既存 DB の変更を リアルタイム に BigQuery / Cloud Storage に流す
- ソース: Oracle, MySQL, PostgreSQL, SQL Server, AlloyDB
- 用途例: 分析パイプライン、データレイク構築、移行中の同期維持
🔑 DMS vs Datastream
「移行中も書き込みを止めず、最後にカットオーバー」→ DMS、「継続的にレプリケーション(移行ではなく分析等)」→ Datastream。
Migration Center(移行統合プラットフォーム)
[Phase 1] Discovery → mCollector で資産棚卸し
[Phase 2] Assessment → 適合度評価、コスト試算
[Phase 3] Recommendation → 6R 戦略の推奨
[Phase 4] Plan → 移行ウェーブ計画
[Phase 5] Execution → M4CE / DMS / M2C との連携
📘 ⑥ Infrastructure as Code(IaC)
「インフラをコードとして管理」する考え方。GCP では Terraform が標準、K8s ネイティブなら Config Connector。
GCP の IaC 選択肢
| ツール | 概要 |
| Terraform | HashiCorp 製、最も普及、マルチクラウド対応 |
| Config Connector | Kubernetes CRD で GCP リソース管理(GitOps と相性◎) |
| Pulumi | 一般言語(TS/Python/Go)で IaC |
| Deployment Manager | GCP 純正(レガシー、新規は非推奨) |
Terraform の基本
# main.tf
provider "google" {
project = "my-project"
region = "asia-northeast1"
}
resource "google_storage_bucket" "logs" {
name = "my-project-logs"
location = "ASIA-NORTHEAST1"
uniform_bucket_level_access = true
}
resource "google_cloud_run_v2_service" "app" {
name = "my-app"
location = "asia-northeast1"
template {
containers {
image = "us-docker.pkg.dev/my-project/repo/app:v1"
}
}
}
terraform init → プロバイダ・モジュール初期化
terraform plan → 差分プレビュー
terraform apply → 実行
terraform destroy → 破棄
💡 GCS Backend が推奨
State は GCS Backend で共有 + ロック対応。CI 内で apply(個人 PC 禁止)。
terraform {
backend "gcs" {
bucket = "my-tfstate-bucket"
prefix = "envs/prod"
}
}
🔧 Cloud Build の機能と制約
| 観点 | 詳細 |
| トリガー | Push、PR、タグ、Pub/Sub、手動、スケジュール |
| マシン種別 | E2-medium(デフォルト)〜 N1-highcpu-32(大規模) |
| Private Pool | プライベート VPC 内でビルド(オンプレ DB 参照可) |
| 並列ステップ | waitFor: ["-"] で同時実行 |
| キャッシュ | Kaniko / GCS / Docker Layer キャッシュ |
| シークレット | Secret Manager 連携 |
| 代替ツール | GitHub Actions、GitLab CI、CircleCI、Jenkins |
🔧 マルチステージビルド実例
steps:
# 1. テスト
- name: 'gcr.io/cloud-builders/go'
args: ['test', './...']
id: 'test'
# 2. コンテナビルド(test 完了待ち)
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', '${_IMAGE}:${SHORT_SHA}', '.']
waitFor: ['test']
id: 'build'
# 3. 脆弱性スキャン(並列)
- name: 'gcr.io/cloud-builders/gcloud'
args: ['artifacts', 'docker', 'images', 'scan', '${_IMAGE}:${SHORT_SHA}']
waitFor: ['build']
# 4. Cloud Deploy へ受渡し
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
args: ['gcloud', 'deploy', 'releases', 'create', 'rel-${SHORT_SHA}',
'--delivery-pipeline=app-pipeline',
'--region=asia-northeast1']
substitutions:
_IMAGE: 'asia-docker.pkg.dev/PROJECT/repo/app'
options:
logging: CLOUD_LOGGING_ONLY
machineType: 'E2_HIGHCPU_8'
🔧 Cloud Build のセキュリティ強化
- カスタムサービスアカウント を使う(デフォルト SA は強権限)
- Binary Authorization で署名付きイメージのみデプロイ
- Private Pool でオンプレ依存ビルド
- Workload Identity Federation で外部 CI から鍵なし認証
- Provenance(来歴) を SLSA 準拠で取得
🔧 Artifact Registry の高度な使い方
| 機能 | 用途 |
| Remote Repository | Docker Hub / Maven Central のキャッシュ |
| Virtual Repository | 複数リポを 1 URL に統合 |
| CMEK 暗号化 | コンプラ要件 |
| VPC-SC 境界 | リーク防止 |
| 脆弱性スキャン | 自動スキャン、CVE 検出 |
| Container Analysis | メタデータ・SBOM 管理 |
| Binary Authorization 連携 | 署名検証してデプロイ |
🔧 Apigee vs API Gateway vs Cloud Endpoints の選定
| 要件 | 推奨 |
| 開発者ポータル必須 | Apigee |
| マネタイズ・課金 | Apigee |
| 複雑なポリシー(変換、JWT、Quota) | Apigee |
| サーバーレス API の単純公開(Cloud Run/Functions) | API Gateway |
| 低コスト、簡易管理 | API Gateway |
| gRPC / OpenAPI 中心、GKE バックエンド | Cloud Endpoints |
| ESPv2(拡張サーバープロキシ) | Cloud Endpoints |
🔧 負荷テストツールの比較
| ツール | 言語 | 特徴 |
| Locust | Python | コードベースシナリオ、Web UI、分散実行 |
| JMeter | Java | GUI、レガシー、プラグイン豊富 |
| k6 | JavaScript | 開発者寄り、CLI、Cloud Native |
| Gatling | Scala | 高負荷、HTML レポート |
| Vegeta | Go | シンプルな CLI |
🔧 GCP 上で負荷テスト
| 方法 | 用途 |
| GKE で Locust を分散実行 | 大規模・カスタマイズ自由 |
| Cloud Run でツール実行 | 小〜中規模、コスト効率 |
| Cloud Build からスクリプト | CI 内負荷テスト |
| k6 Cloud / Locust Cloud | SaaS、運用負担なし |
🔧 Cloud Emulators の CI 統合例
# cloudbuild.yaml の例
steps:
- name: 'google/cloud-sdk:emulators'
entrypoint: 'bash'
args:
- '-c'
- |
gcloud emulators firestore start --host-port=localhost:8080 &
export FIRESTORE_EMULATOR_HOST=localhost:8080
npm test
🔧 Terraform の構造化
terraform/
├── modules/
│ ├── network/ # VPC モジュール
│ ├── gke/ # GKE モジュール
│ └── monitoring/
├── envs/
│ ├── dev/
│ │ ├── main.tf
│ │ ├── variables.tf
│ │ └── backend.tf
│ ├── staging/
│ └── prod/
└── shared/
└── iam.tf
🔧 Terraform vs Config Connector
| 観点 | Terraform | Config Connector |
| 表現 | HCL | Kubernetes CRD (YAML) |
| 実行環境 | CLI / CI | GKE クラスタ内コントローラ |
| GitOps | Argo CD / Flux と組合せ | K8s ネイティブで GitOps と相性◎ |
| 学習コスト | 中 | 高(K8s 知識前提) |
| 推奨 | 汎用、マルチクラウド | GKE 中心、GitOps 徹底 |
🔧 IaC の安全運用
- Service Account に最小権限:
roles/owner は避け、必要な API ごとに付与
- CI 内でのみ apply: 個人 PC で apply しない
terraform plan の差分を必ず PR レビュー
- Sensitive 変数は Secret Manager から取得
🔧 6R 戦略と移行ツール対応
| 移行戦略(6R) | 推奨ツール |
| Rehost | M4CE / Migrate for Compute Engine |
| Replatform(DB のみマネージド化) | DMS |
| Refactor(リアルタイム分析) | Datastream + BigQuery |
| Repurchase | (対象外) |
🔧 実装管理のトレードオフ例
📋 ケース: モノリス vs マイクロサービス CI/CD(クリックで展開)
要件: 月 100 デプロイ、3 チーム並走
- A: モノリス + Cloud Build 1 パイプライン → 待ちが発生
- B: マイクロサービス + チームごとの Cloud Build トリガー → 並行可能、運用は複雑
→ B を採用(並行性 > 運用シンプル)
📋 ケース: Terraform vs Config Connector(クリックで展開)
要件: GKE 中心、GitOps 徹底、運用チームは K8s に慣れている
- A: Terraform CI で apply
- B: Config Connector + Argo CD
→ B を採用(K8s ネイティブで GitOps)
📋 ケース: Apigee vs API Gateway(クリックで展開)
要件: 社内マイクロサービス公開、認証は IAM、軽量に始めたい
- A: Apigee → オーバースペック
- B: API Gateway + Cloud Run → 軽量、Cloud IAM 連携
→ B を採用(外部開発者ポータルが必要なら Apigee に切替)
⚡ CI/CD パイプライン(即答)
| 役割 | サービス |
| CI(ビルド・テスト) | Cloud Build |
| 成果物保管 | Artifact Registry(旧 Container Registry) |
| CD(環境間進行) | Cloud Deploy |
| 署名・検証 | Binary Authorization + Container Analysis |
| シークレット注入 | Secret Manager |
| K8s デリバリ(GitOps) | Config Sync / Argo CD / Flux |
⚡ デプロイ戦略(即答)
| 戦略 | 用途 |
| Rolling Update | 一般 Web |
| Blue-Green | 即時切戻し |
| Canary | 段階リリース・早期検知 |
| Recreate | ステートフル少数 |
| A/B テスト | 機能比較(効果測定、Canary とは別目的) |
⚡ API 管理(即答)
| 要件 | サービス |
| フルライフサイクル / 開発者ポータル / マネタイズ | Apigee |
| サーバーレス API ゲートウェイ(Cloud Run / Functions) | API Gateway |
| gRPC / OpenAPI、GKE/GCE バックエンド | Cloud Endpoints (ESPv2) |
| Apigee + オンプレ/他クラウド GKE | Apigee Hybrid |
⚡ Cloud Emulators 対応(即答)
| サービス | Emulator あり |
| Bigtable | ✓ |
| Spanner | ✓ |
| Pub/Sub | ✓ |
| Firestore | ✓ |
| その他 | エミュレータなし |
⚡ 移行ツール(即答)
| ソース → ターゲット | ツール |
| DB 全般(最小ダウン) | DMS |
| DB → 分析 / リアルタイム CDC | Datastream |
| VM → GCE | Migrate for Compute Engine |
| VM → コンテナ | Migrate to Containers |
| GCS 間 / S3 / Azure / HTTP | Storage Transfer Service |
| 大量データ(>100TB) | Transfer Appliance |
| SaaS → BigQuery | BigQuery Data Transfer Service |
| 移行アセスメント・計画 | Migration Center |
⚡ IaC 選定(即答)
| 観点 | 推奨 |
| 汎用、マルチクラウド | Terraform |
| K8s ネイティブ、GitOps 徹底 | Config Connector |
| 一般言語で書きたい | Pulumi |
| 新規は使うな | Deployment Manager(レガシー) |
5.2 Google Cloud の管理ツールでのプログラム的操作
クラウドリソースを操作する CLI / SDK / IDE / AI 支援 のツール群。「どのツールがどの場面で最適か」が問われます。
📘 ① Cloud Shell / Cloud Code / Cloud Workstations
Cloud Shell — ブラウザの即席開発環境
ブラウザから即起動できる マネージド開発環境。gcloud / gsutil / bq / kubectl / terraform などがプリインストール。
| 構成要素 | 内容 |
| Cloud Shell Terminal | ブラウザの bash シェル、5GB の永続 $HOME、無料 |
| Cloud Shell Editor | ブラウザ版 VS Code(Theia ベース)、シンタックスハイライト、デバッガ |
| Boost Mode | 一時的に高速化(4 コア/8GB) |
Cloud Code — ローカル IDE 拡張
ローカル IDE(VS Code / IntelliJ)の拡張機能。
- GKE / Cloud Run 用テンプレートとデプロイ
- Skaffold / Kustomize / Helm 統合
- Cloud APIs スニペット
- Cloud Run 用ローカル実行
- リモートデバッグ
- Gemini Code Assist 統合
Cloud Workstations — マネージド開発環境
ブラウザでアクセスできる マネージド開発環境。Cloud Shell より高性能で、専用ネットワーク内に配置可能。
| 観点 | Cloud Shell | Cloud Workstations |
| 起動速度 | 即時 | 数分 |
| 永続化 | 5GB | フル永続 PVC |
| 性能 | 小 | カスタマイズ可(CPU/GPU/メモリ) |
| ネットワーク | パブリック | プライベート VPC |
| 用途 | 一時オペ・学習 | 本格開発、規制環境 |
🔑 開発環境の使い分け
- 「ブラウザですぐ gcloud」→ Cloud Shell
- 「ローカル IDE で K8s/Cloud Run 開発」→ Cloud Code
- 「本格開発、規制環境、プライベート VPC」→ Cloud Workstations
📘 ② gcloud / gsutil / bq の役割
| CLI | 担当 |
| gcloud | GCP リソース全般(プロジェクト、Compute、GKE、IAM 等) |
| gsutil | Cloud Storage 専用(旧、現在は gcloud storage に置き換え推奨) |
| bq | BigQuery 専用 |
| kubectl | Kubernetes 操作(GKE) |
| terraform | IaC(GCP プロバイダ) |
よく使う代表コマンド
# gcloud
gcloud auth login # 認証
gcloud config set project PROJECT_ID # プロジェクト切替
gcloud compute instances list # VM 一覧
gcloud run deploy my-app --image=IMAGE # Cloud Run デプロイ
gcloud iam service-accounts list # SA 一覧
# gsutil / gcloud storage
gsutil cp file.txt gs://bucket/ # アップロード(旧)
gcloud storage cp file.txt gs://bucket/ # 新コマンド(推奨)
gcloud storage ls gs://bucket/
# bq
bq query --use_legacy_sql=false 'SELECT 1'
bq mk --dataset mydataset
bq load --source_format=CSV ds.table file.csv
# kubectl (GKE)
gcloud container clusters get-credentials CLUSTER --region=REGION
kubectl get pods
kubectl apply -f manifest.yaml
# Cloud Deploy
gcloud deploy releases create rel-$(date +%s) \
--delivery-pipeline=app-pipeline \
--region=asia-northeast1
# Cloud Build
gcloud builds submit --config=cloudbuild.yaml .
💡 gsutil → gcloud storage
gsutil の機能は gcloud storage に統合されつつある。CI/CD では gcloud storage を推奨。
📘 ③ Google API クライアントライブラリ
GCP の操作は REST API が本体。クライアントライブラリ を使うとリトライ・認証・ページング等を自動化できる。
| 言語 | ライブラリ |
| Python | google-cloud-*(google-cloud-storage 等) |
| Java | com.google.cloud:google-cloud-* |
| Go | cloud.google.com/go/* |
| Node.js | @google-cloud/* |
| .NET | Google.Cloud.* |
| PHP / Ruby | 同様 |
認証の基本(重要)
| 認証方式 | 用途 |
| ADC(Application Default Credentials) | デフォルト推奨。実行環境の認証を自動取得 |
| Service Account Key (JSON) | 旧式、漏えいリスクあり、極力避ける |
| Workload Identity | GKE 内 Pod を SA に紐付け(鍵不要) |
| Workload Identity Federation | オンプレ / 他クラウドから OIDC で GCP 認証(鍵不要) |
# Python の例
from google.cloud import storage
client = storage.Client() # ADC で自動認証
bucket = client.bucket("my-bucket")
ベストプラクティス
- ADC を使う(環境別に自動切替)
- 指数バックオフ でリトライ(クライアントライブラリは内蔵)
- Idempotency を意識(重複呼出に対する冪等性)
- Quotas を意識(429 エラー → バックオフ)
- 同時並列度 を制限(多数の API を叩きすぎない)
- Service Account のキー直書きは避ける
📘 ④ Gemini Code Assist と Gemini Cloud Assist
| サービス | 役割 |
| Gemini Cloud Assist | GCP 運用全般 の AI 支援(コンソール内) |
| Gemini Code Assist | IDE 内のコード補完(VS Code / IntelliJ / Cloud Shell Editor) |
| Vertex AI Gemini API | 開発者向け LLM API |
| Gemini Enterprise Agent Platform | エージェント構築(旧 Vertex AI Agent Builder) |
Gemini Cloud Assist の対応場面
②実装
gcloud コマンド生成、Terraform スニペット生成、コードレビュー
⑥Investigations
障害時の関連リソース・ログ・メトリクス横断分析、原因仮説生成
🔑 試験で問われる使い分け
- 「Terraform を書くのを手伝って」→ Gemini Code Assist(IDE 内)
- 「障害発生時のログ解析を手伝って」→ Gemini Cloud Assist(コンソール内)
- 「gcloud コマンドを忘れた、教えて」→ Gemini Cloud Assist
- 「アーキ図のドラフトを作って」→ Gemini Cloud Assist
- 「単体テストを生成して」→ Gemini Code Assist
🔧 認証戦略の選定
| 環境 | 認証 |
| ローカル開発 | gcloud auth application-default login(ADC) |
| GCE / GKE / Cloud Run / Cloud Functions | メタデータサーバ経由の SA(自動) |
| GKE Pod | Workload Identity(K8s SA ↔ GCP SA) |
| オンプレ / 他クラウド | Workload Identity Federation(OIDC / SAML) |
| 緊急時のみ | SA Key(漏えいリスク注意) |
🔧 リトライ戦略(指数バックオフ)
1 回目 失敗 → 1 秒待機
2 回目 失敗 → 2 秒待機
3 回目 失敗 → 4 秒待機
...(指数バックオフ + ジッター)
- クライアントライブラリは 指数バックオフ + ジッター を内蔵
- リトライ対象: 5xx、429(Too Many Requests)、一部 408
- リトライ不可: 4xx 系(認証エラー、Bad Request など)
🔧 冪等性(Idempotency)
| 状況 | 対策 |
| POST で作成 | Idempotency Key ヘッダ送信 |
| Pub/Sub Publisher | Ordered Delivery + Deduplication ID |
| Cloud Functions | At-least-once 配信前提で設計 |
| BigQuery Insert | insertId を指定 |
🔧 バッチング・ページング
| 操作 | 推奨 |
| 大量 GET | ページング(pageToken) |
| 大量 INSERT | バッチ API(List / BulkInsert) |
| BigQuery 取込 | バッチ Load Job、Storage Write API |
| Pub/Sub Publish | Publisher のバッチ設定 |
🔧 クライアントライブラリと REST API の使い分け
| 場合 | 推奨 |
| 言語サポートあり | クライアントライブラリ |
| シェルスクリプト | gcloud / curl + REST |
| マイナーな言語 | REST + 自前 OAuth トークン取得 |
| プレビュー API | REST(クライアントが未対応のことが多い) |
🔧 REST API の呼び出し例
# アクセストークン取得
TOKEN=$(gcloud auth print-access-token)
# Compute Engine 一覧
curl -H "Authorization: Bearer $TOKEN" \
https://compute.googleapis.com/compute/v1/projects/PROJECT/aggregated/instances
🔧 gRPC との使い分け
- gRPC: 高性能、ストリーミング、Spanner / Bigtable / Pub/Sub などは内部 gRPC
- REST: 互換性重視、ブラウザから直接呼び出し可能
🔧 Cloud Workstations の構成例
[Cloud Workstations Cluster]
↓
[Workstation Config]
├── Container Image(プリインストール SDK)
├── Machine Type(n1-standard-4, GPU 可)
├── Persistent Disk(Home 領域永続化)
└── Network Config(プライベート VPC)
↓
[Workstation インスタンス]
├── ブラウザから IDE アクセス
├── VS Code / JetBrains 対応
└── Gemini Code Assist 統合
⚡ Cloud Shell / Cloud Code / Cloud Workstations(即答)
| ツール | 用途 |
| Cloud Shell Terminal | ブラウザの bash、5GB 永続、gcloud/kubectl/terraform 入り |
| Cloud Shell Editor | ブラウザ版 VS Code、Gemini Code Assist 統合 |
| Cloud Code | ローカル IDE 拡張(VS Code / IntelliJ)、GKE/Cloud Run テンプレ |
| Cloud Workstations | フルマネージド開発環境(高性能、プライベート VPC 可) |
⚡ 認証(即答)
| 認証方式 | 用途 |
| ADC | デフォルト推奨 |
| メタデータ SA | GCE/GKE/Cloud Run/Functions で自動 |
| Workload Identity | GKE Pod ↔ GCP SA |
| Workload Identity Federation | オンプレ・他クラウドから OIDC で鍵なし |
| SA Key (JSON) | 極力避ける、漏えいリスク |
⚡ Gemini AI 支援の使い分け
| 要件 | サービス |
| IDE 内コード補完・生成・テスト生成 | Gemini Code Assist |
| GCP コンソール内のアーキ設計・トラブルシュート | Gemini Cloud Assist |
| LLM API として呼出 | Vertex AI Gemini API |
| エージェント構築 | Gemini Enterprise Agent Platform(旧 Vertex AI Agent Builder) |
⚡ サービスリネーム(最新)
| 旧名 | 新名 |
| Container Registry | Artifact Registry |
| Stratozone | Migration Center |
| Vertex AI Agent Builder | Gemini Enterprise Agent Platform |
| Cloud Functions Gen2 | Cloud Run functions |
⚡ 暗記必須の数値・名前
- Cloud Build デフォルトマシン: E2-medium、最大
E2_HIGHCPU_32
- Cloud Shell ホーム: 5GB 永続
- Cloud Run リクエスト最大時間: 60 分
- Cloud Run functions 最大時間: HTTP 60 分 / イベント 9 分
- DMS サポート: MySQL、PostgreSQL、SQL Server、Oracle → AlloyDB
- Datastream ソース: Oracle、MySQL、PostgreSQL、SQL Server、AlloyDB
- Artifact Registry URL:
*-docker.pkg.dev
- Workload Identity Federation: OIDC / SAML / AWS で GCP 認証
📌 章末まとめ — 実装管理の翻訳パターン
| 要件 | デフォルト解 |
| CI | Cloud Build |
| 成果物保管 | Artifact Registry |
| CD(環境間進行) | Cloud Deploy |
| デプロイ戦略(即時切戻し) | Blue-Green |
| デプロイ戦略(段階リリース) | Canary |
| API フルライフサイクル | Apigee |
| サーバーレス API ゲートウェイ | API Gateway |
| 負荷テスト | Locust / JMeter / k6 |
| DB 移行(最小ダウン) | Database Migration Service |
| CDC ストリーミング | Datastream |
| VM → Container | Migrate to Containers |
| 大量データ移行 | Transfer Appliance |
| 移行アセスメント | Migration Center |
| ローカルテスト | Cloud Emulators |
| IaC 汎用 | Terraform |
| IaC K8s ネイティブ | Config Connector |
| ブラウザ開発 | Cloud Shell Editor |
| IDE 拡張 | Cloud Code |
| AI 支援(IDE) | Gemini Code Assist |
| AI 支援(コンソール) | Gemini Cloud Assist |
| 認証(推奨) | ADC + Workload Identity (Federation) |
| 未署名イメージ拒否 | Binary Authorization |
🔑 試験中の判断フロー
質問を読む
↓
「実装・デプロイ系」キーワード抽出
- ビルド・テスト → Cloud Build / Emulators
- パッケージ管理 → Artifact Registry
- 環境間進行 → Cloud Deploy
- API 公開 → Apigee / API Gateway / Endpoints
- データ・DB 移行 → DMS / Datastream / 移行 4 種
- ローカル開発 → Cloud Shell / Cloud Code / Workstations
- インフラコード → Terraform / Config Connector
- 認証 → ADC / Workload Identity / Federation
↓
要件の制約を確認(ダウンタイム、ポータル、ハイブリッド、コンプラ)
↓
最も「制約を満たす最小構成」を選ぶ