deploying-on-gcp について
Google Cloud Platform 上で開発するアーキテクトや開発者向けのスキルです。コンピューティング、データ、AI/ML、ネットワーク、セキュリティ、コストに関するサービス選定と構成パターンを、Terraform、Python SDK、gcloud CLI の例とともに示します。
主な機能
- 01GCP サービス選定のフレームワーク
- 02コンピューティング、ストレージ、データベースのパターン
- 03分析と ML のアーキテクチャ
- 04ネットワークとセキュリティの指針
- 05Terraform、Python SDK、gcloud の例
活用シーン
- 01ワークロードに適したコンピューティングとデータベースの選定
- 02BigQuery と Dataflow による分析パイプラインの設計
- 03Vertex AI の学習とモデル提供の計画
- 04AWS または Azure からのワークロード移行
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ ancoleman/ ai-design-components --skill deploying-on-gcpインストール後、Claude Code で/deploying-on-gcpを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
outputs.yamlexamples/gcloud/common-commands.shexamples/terraform/cloud-run-service.tfreferences/compute-services.mdcost-optimization.mddata-analytics.mdml-ai-services.mdnetworking.mdsecurity-iam.mdstorage-databases.md詳細
GCP のパターン
Google Cloud Platform サービスを適切に選択し、アーキテクチャパターンとベストプラクティスを活用して、アプリケーションとインフラストラクチャを構築します。
目的
このスキルでは、コンピューティング、ストレージ、データベース、データ分析、機械学習、ネットワーキング、セキュリティにわたる Google Cloud Platform(GCP)サービスの選定フレームワークと実装パターンを提供します。ワークロード要件に基づくサービス選定を支援し、Terraform、Python SDK、gcloud CLI を使用した本番環境に対応したパターンを紹介します。
使用する場面
次の場合にこのスキルを使用します。
- GCP のコンピューティングサービス(Cloud Run、GKE、Cloud Functions、Compute Engine、App Engine)を選択する
- ストレージサービスまたはデータベースサービス(Cloud Storage、Cloud SQL、Spanner、Firestore、Bigtable、BigQuery)を選択する
- データ分析パイプライン(BigQuery、Pub/Sub、Dataflow、Dataproc、Composer)を設計する
- ML ワークフロー(Vertex AI、AutoML、事前学習済み API)を実装する
- ネットワークインフラストラクチャ(VPC、Load Balancing、CDN、Cloud Armor)を設計する
- IAM、セキュリティ、コスト最適化を設定する
- AWS または Azure から GCP に移行する
- マルチクラウドまたは GCP 中心のアーキテクチャを構築する
基本概念
GCP サービスのカテゴリ
コンピューティングの選択肢:
- Cloud Run: ステートレスな HTTP サービス向けのサーバーレスコンテナ(ゼロまで自動スケール)
- GKE(Google Kubernetes Engine): 複雑なオーケストレーション向けのマネージド Kubernetes
- Cloud Functions: シンプルな処理向けのイベント駆動型関数
- Compute Engine: OS を完全に制御できる仮想マシン
- App Engine: Web アプリケーション向けの Platform-as-a-Service
ストレージとデータベース:
- Cloud Storage: Standard/Nearline/Coldline/Archive の各階層を備えたオブジェクトストレージ
- Cloud SQL: マネージド PostgreSQL/MySQL/SQL Server(最大 96 TB)
- Cloud Spanner: 99.999% の SLA を備えたグローバル分散 SQL
- Firestore: リアルタイム同期に対応した NoSQL ドキュメントデータベース
- Bigtable: 時系列データと IoT 向けのワイドカラム NoSQL(ペタバイト規模)
- AlloyDB: PostgreSQL 互換で、パフォーマンスが 4 倍向上
データと分析:
- BigQuery: サーバーレスデータウェアハウス(ペタバイト規模の SQL 分析)
- Pub/Sub: グローバルなメッセージングとイベントストリーミング
- Dataflow: ストリーム処理とバッチ処理向けの Apache Beam
- Dataproc: マネージド Spark および Hadoop クラスター
- Cloud Composer: ワークフロー向けのマネージド Apache Airflow
AI/ML サービス:
- Vertex AI: 統合 ML プラットフォーム(トレーニング、デプロイ、モニタリング)
- AutoML: 標準的なタスク向けのノーコード ML
- 事前学習済み API: Vision、Natural Language、Speech、Translation
- TPU: 大規模モデルのトレーニング向け Tensor Processing Unit
選定フレームワーク:コンピューティングサービスの選択
Need to run code in GCP?
├─ HTTP service?
│ ├─ YES → Stateless?
│ │ ├─ YES → Cloud Run (auto-scale to zero)
│ │ └─ NO → Need Kubernetes? → GKE | Compute Engine
│ └─ NO (Event-driven)
│ ├─ Simple function? → Cloud Functions
│ └─ Complex orchestration? → GKE | Cloud Run Jobs
選定ガイド:
- 最初の選択肢: Cloud Run(状態管理または Kubernetes が必要な場合を除く)
- Kubernetes が必要: GKE Autopilot(マネージド)または Standard(完全な制御)
- シンプルなイベント: Cloud Functions(実行時間は最大 60 分)
- 完全な制御: Compute Engine(カスタム構成の VM)
選定フレームワーク:データベースの選択
Choose database type:
├─ Relational (SQL)
│ ├─ Multi-region required? → Cloud Spanner
│ ├─ PostgreSQL + high performance? → AlloyDB
│ └─ Standard RDBMS → Cloud SQL (PostgreSQL/MySQL/SQL Server)
│
├─ Document (NoSQL)
│ ├─ Mobile/web with offline sync? → Firestore
│ └─ Flexible schema, no offline? → MongoDB Atlas (Marketplace)
│
├─ Key-Value
│ ├─ Time-series or IoT data? → Bigtable
│ └─ Caching layer? → Memorystore (Redis/Memcached)
│
└─ Analytics
└─ Petabyte-scale SQL analytics → BigQuery
選定フレームワーク:ストレージの選択
Storage type needed?
├─ Objects/Files
│ ├─ Frequent access → Cloud Storage (Standard)
│ ├─ Monthly access → Cloud Storage (Nearline)
│ ├─ Quarterly access → Cloud Storage (Coldline)
│ └─ Yearly access → Cloud Storage (Archive)
│
├─ Block storage → Persistent Disk (SSD/Standard/Extreme)
└─ Shared filesystem → Filestore (NFS)
GCP、AWS、Azure のサービス対応表
| カテゴリ | GCP | AWS | Azure |
|---|---|---|---|
| サーバーレスコンテナ | Cloud Run | Fargate | Container Instances |
| Kubernetes | GKE | EKS | AKS |
| 関数 | Cloud Functions | Lambda | Functions |
| VM | Compute Engine | EC2 | Virtual Machines |
| オブジェクトストレージ | Cloud Storage | S3 | Blob Storage |
| SQL データベース | Cloud SQL | RDS | SQL Database |
| NoSQL ドキュメント | Firestore | DynamoDB | Cosmos DB |
| データウェアハウス | BigQuery | Redshift | Synapse |
| メッセージング | Pub/Sub | SNS/SQS | Service Bus |
| ML プラットフォーム | Vertex AI | SageMaker | Machine Learning |
アーキテクチャパターン
パターン 1:サーバーレス Web アプリケーション
ユースケース: データベースとキャッシュを備えたステートレス HTTP API
アーキテクチャ:
Internet → Cloud Load Balancer → Cloud Run → Cloud SQL (PostgreSQL)
→ Memorystore (Redis)
→ Cloud Storage
主なサービス:
- API サービス向けの Cloud Run(自動スケーリングされるコンテナ)
- トランザクションデータ向けの Cloud SQL
- キャッシュ向けの Memorystore
- ファイルアップロード向けの Cloud Storage
Terraform の詳細な設定については、references/compute-services.md を参照してください。
パターン 2:データ分析プラットフォーム
ユースケース: リアルタイムのイベント処理と分析
アーキテクチャ:
Data Sources → Pub/Sub → Dataflow → BigQuery → Looker/Tableau
↓
Cloud Storage (staging)
主なサービス:
- イベントの取り込み向けの Pub/Sub(少なくとも 1 回の配信)
- ストリーム処理向けの Dataflow(Apache Beam)
- 分析向けの BigQuery(パーティション分割テーブル、クラスタリング)
- ステージングとバックアップ向けの Cloud Storage
BigQuery の最適化パターンについては、references/data-analytics.md を参照してください。
パターン 3:ML パイプライン
ユースケース: エンドツーエンドの機械学習ワークフロー
アーキテクチャ:
Training Data (GCS) → Vertex AI Training → Model Registry → Vertex AI Endpoints
↓
Predictions
主なサービス:
- ノートブック開発向けの Vertex AI Workbench
- カスタムモデル向けの Vertex AI Training(GPU/TPU に対応)
- モデルのサービング向けの Vertex AI Endpoints(自動スケーリング)
- オーケストレーション向けの Vertex AI Pipelines(Kubeflow)
ML の実装例については、references/ml-ai-services.md を参照してください。
パターン 4:GKE マイクロサービスプラットフォーム
ユースケース: 複数のサービスを伴う複雑なオーケストレーション
アーキテクチャ:
Internet → Cloud Load Balancer → GKE Cluster
├─ Ingress Controller
├─ Service Mesh (optional)
├─ Microservice A
├─ Microservice B
└─ Microservice C
主な機能:
- GKE Autopilot(ノードの完全マネージド)または Standard(カスタム設定)
- GCP サービスへのセキュアなアクセスを実現する Workload Identity
- Private Google Access を備えたプライベートクラスター
- Kubernetes 経由で GCP リソースを管理する Config Connector
GKE の設定とベストプラクティスについては、references/compute-services.md を参照してください。
ベストプラクティス
コストの最適化
コンピューティング:
- 予測可能なワークロードには Committed Use Discounts を使用します(57% 割引)
- フォールトトレラントなワークロードには Spot VM を使用します(60~91% 割引)
- Cloud Run はアイドル時にゼロまでスケールするため、料金は発生しません
- GKE Autopilot ではノードではなく、Pod のリソースに対してのみ料金が発生します
ストレージ:
- 用途に適した Cloud Storage クラス(Standard/Nearline/Coldline/Archive)を使用します
- Object Lifecycle Management を有効にして、アクセス頻度の低いデータを移行します
- バックアップは Coldline または Archive にアーカイブします(Standard より 99% 安価)
データ:
- BigQuery では、パーティション分割テーブルとクラスタ化テーブルを使用します
- 必要な列だけをクエリします(
SELECT *は避けます) - キャッシュには BI Engine を使用します(最大 10TB まで無料)
- BigQuery を大量に使用する場合は、定額料金を検討します
詳細なコスト戦略については、references/cost-optimization.md を参照してください。
セキュリティの基本
IAM のベストプラクティス:
- 最小権限の原則に従います
- アプリケーションではユーザーアカウントではなく、サービスアカウントを使用します
- GKE ワークロードでは Workload Identity を有効にします(サービスアカウントキーは不要です)
- シークレットには環境変数ではなく Secret Manager を使用します
ネットワークセキュリティ:
- Private Google Access を使用します(パブリック IP なしで GCP サービスにアクセスできます)
- プライベートインスタンスからのアウトバウンドインターネット接続には Cloud NAT を有効にします
- データの持ち出しを防ぐため、VPC Service Controls を実装します
- ゼロトラストアクセスには Identity-Aware Proxy(IAP)を使用します
データセキュリティ:
- 保存時(デフォルト)と転送中の暗号化を有効にします
- 機密データには Customer-Managed Encryption Keys(CMEK)を使用します
- データ保護のため、VPC Service Controls の境界を実装します
- すべてのプロジェクトで監査ログを有効にします
包括的なセキュリティパターンについては、references/security-iam.md を参照してください。
高可用性
マルチリージョン戦略:
- Cloud Storage:マルチリージョンロケーション(US、EU、ASIA)を使用します
- Cloud SQL:リージョン HA(自動フェイルオーバー)を有効にします
- Cloud Spanner:マルチリージョン構成を使用します(SLA 99.999%)
- グローバルロードバランシング:トラフィックを最も近い正常なバックエンドにルーティングします
バックアップと災害復旧:
- Cloud SQL:自動バックアップとポイントインタイムリカバリを有効にします
- Persistent Disk:スナップショットのバックアップをスケジュールします
- Cloud Storage:重要なデータのバージョニングを有効にします
- BigQuery:タイムトラベルにはテーブルスナップショットを使用します
ネットワーキングと HA のパターンについては、references/networking.md を参照してください。
クイックリファレンス
一般的な gcloud コマンド
# Project management
gcloud projects list
gcloud config set project PROJECT_ID
# Cloud Run
gcloud run deploy SERVICE_NAME --image IMAGE_URL --region REGION
gcloud run services list
# GKE
gcloud container clusters create-auto CLUSTER_NAME --region REGION
gcloud container clusters get-credentials CLUSTER_NAME --region REGION
# Cloud Storage
gsutil mb gs://BUCKET_NAME
gsutil cp FILE gs://BUCKET_NAME/
# BigQuery
bq mk DATASET_NAME
bq query --use_legacy_sql=false 'SELECT * FROM dataset.table LIMIT 10'
# Cloud SQL
gcloud sql instances create INSTANCE_NAME --database-version=POSTGRES_15 --region=REGION
gcloud sql connect INSTANCE_NAME --user=postgres
コマンドの全リファレンスについては、examples/gcloud/common-commands.sh を参照してください。
Python SDK クイックスタート
# Cloud Storage
from google.cloud import storage
client = storage.Client()
bucket = client.bucket('my-bucket')
blob = bucket.blob('file.txt')
blob.upload_from_filename('local-file.txt')
# BigQuery
from google.cloud import bigquery
client = bigquery.Client()
query = "SELECT * FROM `project.dataset.table` LIMIT 10"
results = client.query(query).result()
# Pub/Sub
from google.cloud import pubsub_v1
publisher = pubsub_v1.PublisherClient()
topic_path = publisher.topic_path('project', 'topic-name')
future = publisher.publish(topic_path, b'message data')
Python の完全なサンプルについては、examples/python/ を参照してください。
Terraform クイックスタート
# Provider configuration
terraform {
required_providers {
google = {
source = "hashicorp/google"
version = "~> 5.0"
}
}
}
provider "google" {
project = "my-project-id"
region = "us-central1"
}
# Cloud Run service
resource "google_cloud_run_service" "api" {
name = "api-service"
location = "us-central1"
template {
spec {
containers {
image = "gcr.io/project/api:latest"
}
}
}
}
Terraform の完全なサンプルについては、examples/terraform/ を参照してください。
サービス選択早見表
| 要件 | 推奨サービス | 代替サービス |
|---|---|---|
| ステートレスな HTTP API | Cloud Run | App Engine |
| 複雑なオーケストレーション | GKE Autopilot | GKE Standard |
| イベント処理 | Cloud Functions | Cloud Run Jobs |
| オブジェクトストレージ | Cloud Storage | N/A |
| リレーショナルデータベース | Cloud SQL | AlloyDB、Spanner |
| NoSQL ドキュメント | Firestore | MongoDB Atlas |
| 時系列データ | Bigtable | N/A |
| データウェアハウス | BigQuery | N/A |
| メッセージキュー | Pub/Sub | N/A |
| ストリーム処理 | Dataflow | Dataproc |
| バッチ処理 | Dataflow | Dataproc |
| ML トレーニング | Vertex AI | GKE 上のカスタム実装 |
| キャッシュ | Memorystore Redis | N/A |
他のスキルとの連携
関連スキル:
- infrastructure-as-code: Terraform を使用して GCP リソースをプロビジョニングします(
examples/terraform/を参照) - kubernetes-operations: GKE 上でアプリケーションをデプロイし、管理します
- building-ci-pipelines: Cloud Build を使用して Cloud Run または GKE への CI/CD を行います
- secret-management: 機密性の高い設定に Secret Manager を使用します
- observability: メトリクスとログに Cloud Monitoring と Cloud Logging を使用します
- data-architecture: BigQuery と Cloud Storage を使用してデータレイクとデータウェアハウスを設計します
- mlops-patterns: Vertex AI を使用して ML パイプラインを実装します
- aws-patterns: マルチクラウド環境向けに AWS と GCP の同等サービスを比較します
- azure-patterns: Azure と GCP の同等サービスを比較します
段階的な情報開示
詳細なドキュメントについては、以下を参照してください。
- コンピューティングサービス: Cloud Run、GKE、Cloud Functions、Compute Engine、App Engine のパターンについては、
references/compute-services.mdを参照してください - ストレージとデータベース: サービス選択と設定の詳細については、
references/storage-databases.mdを参照してください - データ分析: BigQuery、Pub/Sub、Dataflow、Dataproc のパターンについては、
references/data-analytics.mdを参照してください - ML/AI サービス: Vertex AI、AutoML、事前トレーニング済み API の使用方法については、
references/ml-ai-services.mdを参照してください - ネットワーキング: VPC、Load Balancing、CDN、Cloud Armor のパターンについては、
references/networking.mdを参照してください - セキュリティと IAM: IAM パターン、Workload Identity、Secret Manager については、
references/security-iam.mdを参照してください - コスト最適化: 詳細なコスト削減戦略については、
references/cost-optimization.mdを参照してください
実例については、以下を参照してください。
- Terraform の設定: インフラストラクチャのテンプレートについては、
examples/terraform/を参照してください - Python SDK の使用方法: クライアントライブラリの例については、
examples/python/を参照してください - gcloud CLI コマンド: コマンドリファレンスについては、
examples/gcloud/common-commands.shを参照してください
主な判断のまとめ
GCP を選択する場合:
- データ分析ワークロード(BigQuery はクラス最高水準です)
- ML/AI アプリケーション(Vertex AI、TPU、Google Research の支援)
- Kubernetes ネイティブアプリケーション(Kubernetes の開発者が GKE を開発)
- サーバーレスコンテナ(Cloud Run は成熟しており、費用対効果に優れています)
- リアルタイムストリーミング(Pub/Sub + Dataflow)
GCP 独自の利点:
- BigQuery:サーバーレス、ペタバイト規模、最速のデータウェアハウス
- Cloud Run:最も成熟したサーバーレスコンテナプラットフォーム
- GKE:最も高度なマネージド Kubernetes(Autopilot モード)
- Vertex AI:統合 ML プラットフォーム(トレーニング、デプロイ、モニタリング)
- 秒単位の課金と継続利用割引(自動的なコスト削減)
マルチリージョンの推奨事項:
- 本番ワークロード:99.95%以上の SLA を実現するには、マルチリージョンを使用します
- Cloud Storage:グローバルアクセスにはマルチリージョンを使用します
- Cloud Spanner:グローバルトランザクションにはマルチリージョンを使用します
- Global Load Balancing:最も近い正常なバックエンドにルーティングします