GOOGLE CLOUD 基礎

Cloud Runを
実行基盤として読む

コンテナをHTTPサービスまたは一回限りのJobとして動かし、運用単位を小さくする。

TL;DR
  1. コンテナイメージを実行するマネージド基盤。
  2. ServiceはHTTP待受、Jobは終了する処理。
  3. 負荷に応じてインスタンス数を変えられる。

01 コンテナをサービスにする

Artifact Registryなどのイメージを指定し、サービスアカウント、環境変数、ネットワークと一緒にCloud Runへ渡す。アプリを動かす箱と、箱を増減する基盤を分けて考える。

Cloud Runの実行フロー
コンテナは実行物、Cloud Runは実行基盤。

02 アクセスに合わせて増減する

リクエストがない時間と、アクセスが増えた時間では必要な実行数が違う。状態をコンテナ内に閉じず、DBや外部サービスへ逃がす発想が重要になる。

Cloud Runのオートスケール
スケールの変化を前提に、アプリを設計する。
注意: 同時実行数、タイムアウト、DB接続数を一緒に検討する。

03 ServiceとJobを使い分ける

APIはリクエストを待つService、DBマイグレーションや定期バッチは終わったら停止するJobにする。実行権限とログも分けやすくなる。

Cloud Run ServiceとJobの比較
待受処理と終了処理を一つのサービスに混ぜない。

結論

  1. HTTPはService、終了する処理はJob。
  2. コンテナとサービスアカウントを単位にする。
  3. 接続・秘密情報は別サービスで管理する。