· サーバーレスとアプリケーション開発  · 9 min read

Cloud Run: コンテナ化されたアプリケーションのデプロイ方法

Google Cloud Runを使用してコンテナ化されたアプリケーションを簡単にデプロイする方法を解説します。

Google Cloud Runを使用してコンテナ化されたアプリケーションを簡単にデプロイする方法を解説します。

Cloud Runとは

Google Cloud Runは、コンテナ化されたアプリケーションを簡単にデプロイし、スケーリングできるサーバーレスプラットフォームです。開発者はアプリケーションのコードに集中し、インフラストラクチャの管理から解放されます。

Cloud Runの主な特徴

Cloud Runは、開発者に多くの利点をもたらす革新的なサーバーレスプラットフォームです。以下に、その主な特徴を詳しく見ていきましょう。

1. フルマネージド:インフラストラクチャの管理が不要

Cloud Runは完全にマネージドされたプラットフォームであり、開発者はインフラストラクチャの管理から解放されます。

  • サーバー管理不要: 物理サーバーやVMの設定、メンテナンスが不要
  • 自動パッチ適用: セキュリティパッチや OS アップデートが自動的に適用
  • 高可用性: Google の信頼性の高いインフラストラクチャ上で動作

Cloud Run の概要とアーキテクチャ

2. 自動スケーリング:トラフィックに応じて自動的にスケール

Cloud Runは、アプリケーションへのトラフィックに応じて自動的にスケールします。

  • ゼロからのスケーリング: トラフィックがない場合はインスタンス数をゼロまで減少
  • 瞬時のスケールアップ: 突然のトラフィック増加にも迅速に対応
  • 細かい粒度: 必要に応じて1/1000コンテナ単位でのスケーリングが可能

Cloud Run のスケーリングについて

3. 柔軟性:任意のプログラミング言語やライブラリを使用可能

開発者は好みの言語やツールを使用してアプリケーションを構築できます。

  • 言語非依存: Java, Python, Node.js, Go, Rubyなど、あらゆる言語をサポート
  • カスタムランタイム: 特殊な要件にも対応可能
  • 依存関係の自由: 必要なライブラリやフレームワークを自由に選択

Cloud Run でサポートされている言語

4. コスト効率:使用した分のみ課金

Cloud Runの料金モデルは、実際の使用量に基づいています。

  • 秒単位の課金: 使用した CPU 時間と メモリ時間に対してのみ課金
  • 無料枠: 毎月一定量の無料利用枠を提供
  • アイドル時のコストゼロ: トラフィックがない場合は料金が発生しない

CPUの割り当てモード

  1. CPU always allocated (常時割り当て):

    • コンテナインスタンスにCPUが常に割り当てられます。
    • リクエストの有無に関わらず、インスタンスが稼働している間は常にCPU時間に対して課金されます。
    • レイテンシーに敏感なアプリケーションに適しています。
  2. CPU only allocated during request (リクエスト時のみ割り当て):

    • リクエストを処理している時のみCPUが割り当てられます。
    • アイドル時間中はCPU時間に対して課金されません。
    • コスト効率が高く、トラフィックが変動するアプリケーションに適しています。

料金体系の詳細

  1. リクエスト処理時間:

    • CPUとメモリの使用量に基づいて課金
    • 100ミリ秒単位で計算(最小課金単位は100ミリ秒)
    • CPU always allocated: インスタンスの稼働時間全体に対して課金
    • CPU only allocated during request: リクエスト処理時間のみに対して課金
  2. リクエスト数:

    • 100万リクエストごとに課金
    • HTTPSリクエスト、WebSocketの接続、gRPCメソッドの呼び出しが対象
  3. ネットワーク使用量:

    • 送信データ量に応じて課金(受信データは無料)
  4. 無料枠:

    • 毎月一定量のリソース使用が無料
    • 例:2百万リクエスト、180,000 vCPU秒、360,000 GiB秒のメモリ使用

これらの特徴により、Cloud Runは開発者が効率的かつ柔軟にアプリケーションを展開できるプラットフォームとなっています。特に、インフラストラクチャ管理の負担を軽減しつつ、スケーラビリティとコスト効率を両立させる点が大きな魅力です。

Cloud Run の料金

デプロイの手順

1. コンテナイメージの準備

まず、アプリケーションをコンテナ化し、Container RegistryやArtifact Registryにプッシュします。

docker build -t gcr.io/[PROJECT-ID]/myapp:v1 .
docker push gcr.io/[PROJECT-ID]/myapp:v1

2. Cloud Runサービスの作成

Google Cloud Consoleまたはgcloudコマンドラインツールを使用して、Cloud Runサービスを作成します。

gcloud run deploy --image gcr.io/[PROJECT-ID]/myapp:v1 --platform managed

3. トラフィックの設定

Cloud Runでは、トラフィックの管理と制御に関する豊富な機能を提供しています。これにより、アプリケーションの可用性、セキュリティ、パフォーマンスを最適化できます。

トラフィックの割り当て

Cloud Runでは、複数のリビジョン(バージョン)間でトラフィックを柔軟に分割できます。これは、新機能の段階的なロールアウトやA/Bテストに非常に有効です。

  • パーセンテージベースの割り当て: 異なるリビジョン間でトラフィックを任意の割合で分割できます。
  • タグベースのルーティング: 特定のリビジョンにタグを付け、URLを介して直接アクセスすることが可能です。

設定例(gcloudコマンド):

gcloud run services update-traffic myservice --to-revisions=v1=50,v2=50

トラフィック分割の詳細ドキュメント

認証とセキュリティ

Cloud Runでは、サービスへのアクセス制御を細かく設定できます。

  • 公開アクセス: 誰でもアクセス可能な公開サービスとして設定。
  • 認証済みアクセス: Google Cloud IAMを使用して特定のユーザーやサービスアカウントのみにアクセスを許可。
  • 内部アクセス: VPCネットワーク内からのみアクセス可能に設定。

設定例(gcloudコマンド):

gcloud run services set-iam-policy myservice policy.yaml

Cloud Run の認証設定

カスタムドメインの設定

独自のドメイン名をCloud Runサービスにマッピングすることができます。

  1. ドメインの所有権を確認
  2. SSLサーティフィケートの自動プロビジョニング
  3. カスタムドメインのマッピング

設定例(gcloudコマンド):

gcloud run domain-mappings create --service=myservice --domain=www.example.com

カスタムドメインのマッピング方法

ネットワーキングオプション

Cloud Runは様々なネットワーキングオプションをサポートしています。

  • インターネットからのアクセス: デフォルトの設定
  • 内部トラフィックのみ: VPC内からのアクセスに制限
  • Serverless VPC Access: VPC内のリソースへの安全なアクセス
  • VPC Native: VPCネットワーク内でCloud Runを直接実行

Cloud Run のネットワーキングオプション

これらの設定を適切に組み合わせることで、セキュアで柔軟性の高いアプリケーション展開が可能になります。トラフィックパターン、セキュリティ要件、グローバル展開の必要性などを考慮し、最適な設定を選択することが重要です。

より詳細な情報や設定方法については、Cloud Run のトラフィック管理ドキュメントを参照してください。

ベストプラクティス

  1. コンテナの最適化:軽量なベースイメージを使用
  2. ヘルスチェックの実装:アプリケーションの健全性を確保
  3. 環境変数の活用:設定の柔軟性を高める
  4. 自動デプロイの設定:CI/CDパイプラインの構築

まとめ

Cloud Runは、コンテナ化されたアプリケーションを簡単にデプロイし、管理するための強力なツールです。サーバーレスの利点を活かしつつ、コンテナの柔軟性を享受できます。

より詳細な情報や実践的な例については、以下の書籍をおすすめします:

これらの書籍は、Cloud Runを含むGoogle Cloudの様々なサービスについて深く学ぶことができます。

Back to Blog

Related Posts