Google Cloud Run とは?GCP のサーバーレスコンテナ
Google Cloud Run はコンテナイメージをスケーラブルなサービスまたは job として実行し、スケーリング(ゼロへのスケールを含む)とインフラを処理するため、あなたはイメージを供給するだけで済みます。
Cloud Run は Lambda スタイルの関数とフルの Kubernetes の間のちょうどよい位置にあります。コンテナを渡すと、autoscaling する HTTP サービスまたは batch job として実行します。サーバーや cluster を管理せず、アイドル時にはゼロへスケールするため、リクエストの合間には何も支払いません。
Cloud Run の仕組み
ポートで待ち受けるコンテナイメージをデプロイします。Cloud Run は HTTP(または gRPC)リクエストをインスタンスへルーティングし、トラフィックが来ると立ち上げ、アイドル時にはゼロへ下げます。各リビジョンは immutable で、リビジョン間でトラフィックを分割できます。
サービス vs job
- サービスは受信リクエストを処理し、トラフィックに応じて autoscaling します。
- job は batch や定期的な作業のためにコンテナを完了まで実行します。
- どちらも同じコンテナイメージ形式で動作します。
スケーリングと cold start
Cloud Run は並行数とリクエスト負荷に基づいて水平にスケールします。ゼロへのスケールは費用を節約しますが、次のリクエストで cold start が発生します。レイテンシに敏感なサービスでは、それを避けるためウォームインスタンスの最小数を設定できます。
チームに好まれる理由
任意のコンテナを実行するため、狙うべき独自ランタイムがありません。バースト的なトラフィックでは常時稼働のサーバーより安く、GKE より単純で、イメージ全体を制御できるため関数のみのプラットフォームより柔軟です。
CI/CD での役割
パイプラインはイメージを build し、Artifact Registry へプッシュして、gcloud run deploy を実行し新しいリビジョンを出荷します。Workload Identity Federation を使えば、GitHub Actions は鍵ファイルなしで認証します。canary リリースのため、トラフィックをリビジョン間で段階的にシフトできます。
重要なポイント
- Cloud Run は任意のコンテナを autoscaling するサービスまたは batch job として実行します。
- コスト節約のためゼロへスケールし、cold start を避けるためのウォームインスタンスも任意で設定できます。
- パイプラインはイメージを Artifact Registry へプッシュし、新しいリビジョンをデプロイします。