ものづくりのブログ

うちのネコを題材にしたものづくりができたらいいなと思っていろいろ奮闘してます。

【Cloud run】稼働中のサービスのスケーリングで変更の適用時にサービスが停止するかの条件について調査

Cloud Run で稼働中のサービスについて一時的にリソース不足(アクセススパイク状態の対応)の発生が予測される場合について、サービスを停止することなく調整することが可能か調べてみました。

スケーリング変更の影響

インスタンスの最小数/最大数(min_instances や max_instances) のみ変更

  • 既存のリクエスト処理には影響せず、スケール設定のみが変更
  • サービスは止まらず、新しいスケールルールが適用

cpu や memory の変更

  • 新しいリビジョン(バージョン)がデプロイ(そのためサービス停止)
  • デプロイの瞬間には新リビジョンへの切り替えが発生

サービス

サービスが停止するケース

  • インスタンスの最小数(min_instances: 0) の状態で、しばらくアクセスがない場合、全てのインスタンスがシャットダウンされ、次のリクエストでコールドスタートが発生する。
  • cpu や memory の変更時
  • コードの更新時

サービスが継続するケース

  • インスタンスの最小数/最大数(min_instances や max_instances) のみ変更

スケール設定のみ変更する場合の具体的な設定手順

gcloud コマンドを使用する場合

スケール設定は [gcloud run services update] コマンドで変更できます。

gcloud run services update [my-service] --min-instances=1 --max-instances=10 --region=[asia-northeast1]

Google Cloud コンソールで設定する場合

  • Google Cloud Consoleにアクセス
  • 対象のサービスを選択
  • 「編集とデプロイ」ボタンをクリック
  • 「スケーリング」セクションを展開
    • 「最小インスタンス数」 → 0(デフォルト)または 1 以上を設定
    • 「最大インスタンス数」 → 1 以上の適切な値を設定
  • 「デプロイ」ボタンを押して適用