gcp-cloud-run について
GCP上でサーバーレスアプリケーションを構築するための専門スキルです。コンテナ化されたCloud Runサービス、イベント駆動のCloud Run Functions、コールドスタート最適化、Pub/Sub構成を扱い、権限、コスト、スケーリング、監視上の注意点も示します。
主な機能
- 01コンテナ化されたCloud Runサービスの構築
- 02Cloud Run Functionsによるイベント処理
- 03コールドスタートとイベント駆動構成の最適化
- 04同時実行数、インスタンス上限、DB接続の検討
- 05デプロイ、監視、ロールバックの計画
活用シーン
- 01GCPでサーバーレスアプリをデプロイ
- 02Pub/Subのイベント駆動タスクを処理
- 03Cloud Runの同時実行数とリソース設定を評価
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill gcp-cloud-runインストール後、Claude Code で/gcp-cloud-runを入力して読み込まれたか確認します。
同梱ファイルreferences/detailed-guide.md
詳細
GCP Cloud Run
GCP 上で本番環境に対応したサーバーレスアプリケーションを構築するための専門スキルです。 Cloud Run サービス(コンテナ化)、Cloud Run Functions(イベント駆動型)、 コールドスタートの最適化、Pub/Sub を使ったイベント駆動型アーキテクチャを扱います。
デプロイの前提条件
例は不完全な統合スケッチです。アプリケーションヘルパー、IAM ロール、キュー、リージョン、ヘルスチェック/起動プローブを用意する必要があります。認可されたプロジェクト/サービスと予算を選択し、デフォルトでプライベートなイングレス/認証を使用してください。Artifact Registry のバージョン付きイメージとロールバック用リビジョンを用意してください。過去の nodejs20/GCR の例では、サポート対象ランタイムの確認とレジストリ移行の確認が必要です。最大インスタンス数と DB 接続の合計数に上限を設定してください。最小インスタンス数とブーストには費用が発生します。2xx レスポンスは、処理が完了した後、または処理が確実にキューに登録された後に返し、再試行に備えて冪等性を確保してください。psutil のホストメモリ読み取り値はコンテナの cgroup 制限を反映しない場合があります。Cloud Monitoring/コンテナメトリクスを使用してください。
詳細ガイド
このスキルを実行する前に、詳細ガイドをお読みください。完全な手順と参考資料が記載されています。安全性、前提条件、検証要件は必須として扱ってください。特定の作業では該当するセクションを読み、エンドツーエンドの作業ではガイド全体をお読みください。
/tmp の使用量を含めてメモリを計算する
# cloudbuild.yaml
steps:
- name: 'gcr.io/cloud-builders/gcloud'
args:
- 'run'
- 'deploy'
- 'my-service'
- '--memory=1Gi' # Include /tmp overhead
- '--image=gcr.io/$PROJECT_ID/my-service'
メモリ使用量を監視する
import psutil
import logging
def log_memory():
memory = psutil.virtual_memory()
logging.info(f"Memory: {memory.percent}% used, "
f"{memory.available / 1024 / 1024:.0f}MB available")
concurrency=1 によるスケーリングのボトルネック
深刻度:高
状況:リクエストを分離するために concurrency を 1 に設定する
症状: オートスケーリングによって多数のコンテナインスタンスが作成されます。 トラフィック急増時にレイテンシが高くなります。 コールドスタートが増加します。 インスタンス数の増加により費用が高くなります。
問題が発生する理由: concurrency を 1 に設定すると、各コンテナは一度に 1 つのリクエストしか処理しません。トラフィックが急増すると、次のようになります。
- 同時に処理中の 100 件のリクエストには、容量、キューイング、制限に応じて、最大 100 個のインスタンスが必要になる場合があります
- 各インスタンスでコールドスタートのオーバーヘッドが発生します
- インスタンスが増えるほど費用が高くなります
- スケーリングには時間がかかり、リクエストがキューに滞留します
次の場合に限り使用してください:
- 処理が実際にシングルスレッドである
- リクエストごとの処理がメモリを大量に消費する
- スレッドセーフでないライブラリを使用している
推奨される対処法:ハンドラーのスレッドセーフ性、ピーク時のメモリ使用量、レイテンシ、下流接続の制限に合った concurrency を負荷テストで確認してください。concurrency を 1 にするのが適切な場合もあります。
使用する場面
依頼が上記の機能とパターンに明確に合致する場合に、このスキルを使用してください。
制限事項
- 作業が上記の説明にある範囲に明確に合致する場合にのみ、このスキルを使用してください。
- 出力を、環境固有の検証、テスト、専門家によるレビューの代わりとして扱わないでください。
- 必要な入力、権限、安全上の境界、成功基準が不足している場合は、作業を中断して確認してください。