ものづくりのブログ

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

【CloudRun】「CPUを常に割り当てる」と「インスタンスの最小数を常に割り当てる」の関係について

Cloud Run で「CPU を常に割り当てる」と「インスタンスの最小数を設定する」は、密接に関連していますが、異なる目的を持つ設定です。それぞれの設定が何を意味するかをここにメモします。

CPU を常に割り当てる

設定内容

デフォルトでは Cloud Run はリクエストがない間、CPU を無効化します(スケーラビリティのため)。「CPU を常に割り当てる」を有効にすると、リクエストがない間でもインスタンスでバックグラウンドプロセスを実行できます。

メリット

  • バックグラウンド処理(例: スケジューラーやキュー監視)が可能
  • インスタンスが「コールドスタート」した場合の初期化処理を事前に実行可能

注意点

  • CPU がアイドル状態でも課金が発生

インスタンスの最小数を設定する

設定内容

サービスのインスタンスを 0 以上の数に固定します。デフォルトでは、トラフィックがない場合インスタンス数は 0 になるため、次のリクエスト時に「コールドスタート」が発生します。「最小インスタンス数」を設定すると、常に少なくとも指定数のインスタンスが稼働します。

メリット

  • コールドスタートを回避
  • 高速なレスポンスを維持

注意点

  • 最小インスタンス数を増やすと、トラフィックがなくてもインスタンスの稼働分の課金が発生

両者の関係

「CPU を常に割り当てる」と「インスタンスの最小数」は独立した設定ですが、組み合わせて使用することが多いとのことです。

  • CPU を常に割り当てるを有効にしていても、インスタンス数が 0 になると意味がありません。
  • インスタンスの最小数を設定していても、CPU を常に割り当てていない場合、バックグラウンド処理は行えません。

結論

「CPU を常に割り当てる」と「インスタンスの最小数を設定する」は同じ意味ではありませんが、特定の要件を満たすためには両方の設定が必要になることがあります。

  • バックグラウンド処理を継続的に実行するには 両方を設定 する必要あり
  • コールドスタート回避が主目的なら「最小インスタンス数」だけの設定で十分