サーバーレス

Cloud Run くらうどらん

サーバーレスコンテナGoogle CloudオートスケールKnativeマネージドサービス
Cloud Runについて教えて

簡単に言うとこんな感じ!

「コンテナ(アプリの箱詰めパッケージ)を渡すだけで、サーバーの管理なしにGoogleのクラウドで動かせるサービス」だよ!アクセスがゼロのときは料金もゼロ、急増したら自動で増えるって感じで、とにかく「面倒なインフラ管理を全部おまかせ」できるんだ!


Cloud Runとは

Cloud Runは、Googleが提供するフルマネージドのサーバーレスコンテナ実行プラットフォームです。開発者はアプリケーションをコンテナイメージとしてパッケージ化して渡すだけで、サーバーのセットアップ・OSのパッチ当て・負荷分散・スケーリングといったインフラ管理を一切行わずにアプリを動かせます。

最大の特徴はリクエストベースの課金ゼロへのスケールダウンです。誰もアクセスしていないときはインスタンス数がゼロになり、費用も発生しません。逆に急激にアクセスが集中すると自動でインスタンスを増やして対応します。「夜間はほぼ使われないが、キャンペーン時に急増する」といった用途に非常にマッチします。

Cloud RunはオープンソースのKubernetes拡張仕様であるKnativeをベースに構築されており、特定クラウドへの依存(ベンダーロックイン)を抑えた設計になっています。Google Cloud(旧GCP)の他サービス——BigQuery・Cloud Pub/Sub・Cloud Storageなど——とも緊密に連携できるため、データパイプラインやAPIバックエンドの構築にも広く使われています。


Cloud Runの仕組みと主要概念

概念説明
コンテナイメージアプリ本体+依存ライブラリをひとまとめにした「箱」。Docker形式が標準
サービス (Service)常時リクエストを受け付けるデプロイ単位。HTTPエンドポイントが発行される
ジョブ (Job)バッチ処理など一定時間で完了するタスク向けの実行単位
リビジョン (Revision)デプロイのたびに作成されるスナップショット。トラフィック分割でカナリアリリース可能
オートスケールリクエスト数に応じてインスタンスを0〜N台に自動調整
最小インスタンス数ゼロ起動の遅延(コールドスタート)を避けるため常時1台以上を維持する設定

覚え方:「箱を渡してあとはGoogle」

Cloud Runを一言で覚えるなら「コンテナ箱を渡してあとはGoogleにおまかせ」。
コンテナ(箱)さえ作れれば、サーバー・ネットワーク・スケールは全自動——これがCloud Runの本質です。

リクエスト処理の流れ

ユーザー
  │ HTTPリクエスト

Cloud Run フロントエンド(Googleが管理)
  │ ルーティング・ロードバランシング

コンテナインスタンス(自動増減)
  │ アプリの処理

レスポンス返却

コールドスタート(初回起動の遅延)が気になる場合は「最小インスタンス数=1」に設定することで常時1台をウォームアップ状態に保てます。


歴史と背景

  • 2014年: GoogleがKubernetesをオープンソース公開。コンテナオーケストレーションの概念が普及し始める
  • 2018年: GoogleがKnativeをオープンソース公開。Kubernetes上でサーバーレスなコンテナ実行を実現する仕様
  • 2019年3月: Cloud RunがGoogle Cloud Next ‘19でパブリックベータとして発表・公開
  • 2019年11月: Cloud RunがGA(一般提供)へ。同時にCloud Run for Anthos(自社Kubernetesクラスタ上で動かす版)も提供開始
  • 2020年〜: Cloud Storageイベント・Pub/Subトリガーなど、イベントドリブン連携が強化される
  • 2022年: Cloud Run Jobs(バッチジョブ向け機能)がGAへ。バッチ処理ユースケースもカバー
  • 2023年〜: GPU対応・サイドカーコンテナ・Direct VPC egressなど大規模・エンタープライズ向け機能が続々追加

AWS Lambdaに代表される「関数単位のサーバーレス(FaaS)」とは異なり、コンテナ単位で動かせる点がCloud Runの差別化ポイントとして注目を集め、急速に採用が広がりました。


類似サービスとの比較

Cloud Runとよく比較されるサービスを整理します。

サービス提供元実行単位特徴
Cloud RunGoogle Cloudコンテナ言語・フレームワーク自由。Knativeベース
AWS LambdaAWS関数(コード)FaaS代表格。実行時間15分制限あり
AWS App RunnerAWSコンテナCloud Runに近い立ち位置
Azure Container AppsAzureコンテナKedaベースのAzure版サーバーレスコンテナ
Google Kubernetes Engine (GKE)Google CloudPod(コンテナ群)より細かい制御が必要な場合に選択
Cloud FunctionsGoogle Cloud関数(コード)小さなイベント処理向け。FaaS
サーバーレス vs コンテナ管理:Cloud Runの立ち位置 ← 管理が少ない(簡単) 管理が多い(柔軟)→ ← 小さい粒度 大きい粒度 → Cloud Functions 関数単位 / 最小管理 Cloud Run ★ コンテナ単位 管理ゼロ・言語自由 GKE クラスタ単位 / 高柔軟 AWS Lambda 関数単位 / 時間制限

Cloud Run vs Cloud Functions:どちらを選ぶか

  • Cloud Run:既存のWebアプリ・APIサーバーをそのままコンテナ化して動かしたい場合。実行時間が長い処理・複雑な依存関係がある場合
  • Cloud FunctionsWebhookの受信・ファイルアップロードのトリガーなど、小さくシンプルなイベント処理を素早く書きたい場合

関連する規格・RFC

規格・仕様内容
Knative ServingCloud RunのベースとなるKubernetes拡張仕様。サーバーレスコンテナの標準的な実行モデルを定義
OCI (Open Container Initiative)Dockerなどコンテナイメージのフォーマット・実行仕様を標準化する業界規格
gRPC / HTTP/2Cloud Runがサポートするプロトコル。REST APIだけでなくgRPCサービスも動かせる
Cloud Eventsイベントドリブン連携で使われるイベントデータの標準フォーマット仕様

関連用語

  • コンテナ — アプリとその実行環境をひとまとめにパッケージ化する技術
  • Docker — コンテナを作成・管理するための代表的なツール・プラットフォーム
  • サーバーレス — サーバーの管理をクラウドに任せ、コードや処理の実行に集中できるアーキテクチャ
  • Kubernetes — 多数のコンテナを自動管理・オーケストレーションするOSSプラットフォーム
  • Google Kubernetes Engine (GKE) — GoogleのマネージドKubernetesサービス。より細かい制御が必要な場合の選択肢
  • オートスケール — 負荷に応じてサーバー台数を自動的に増減する仕組み