GCE Instance の自動起動および自動停止が出来る Instance Schedule の紹介と命名規則を考える
こんにちは。 ワタシハ ケンケツ チョットデキル でお馴染みの五十嵐です
( 詳しくは GitHub を参照してください )
本日は Compute Engine (以下、GCE) の一機能を紹介します
皆さんの Google Cloud の設計の参考にして下さい :)
Instance Schedule とは
Instance Schedule (以下、インスタンススケジュール) を使用すると、GCE Instance の起動と停止を自動化する設定ができます
従来は Cloud Scheduler と Cloud Functions を利用して実装していたアーキテクトですが、この機能によりアーキテクトの選択肢が増えました :)
インスタンススケジュールを使用することによるメリット・デメリット
- メリット
- GCE 内の設定のみで完結するので、管理が容易であること (IAM の設定は別途必要)
- デメリット
- 起動・停止 (両方もしくは片方のみ) 以外の設定ができないため、GCE Instance を起動・停止する前に他の処理を入れ込むことができない (※ VM 内の操作であれば Start Script などで実装は可能です)
設定方法
- インスタンススケジュールを作成
- GCE Instance を 新規で作成する時にインスタンススケジュールを設定
もしくは
- インスタンススケジュールを作成
- 既存の GCE Instance にアタッチ
になります
詳しくは公式ドキュメントを参照して下さい
運用方法
- 開発環境の GCE Instance は基本的に自動停止の設定を入れる = コスト削減のため
- 本番環境の GCE Instance は基本的に自動停止の設定を入れない
ただし、バッチ処理などで必要な場合を除きます
バッチ処理であれば、GCE ではなく、Cloud Run Jobs などの PaaS に移行することも検討しても良いかもしれませんね ;)
命名規則を考える
インスタンススケジュールの特性上、以下のことに注意しなければなりません
- インスタンススケジュールのリージョンと GCE Instance のリージョンは同じでなければいけない
- インスタンススケジュールと GCE Instance の関係は 1:N である
上記を踏まえて、インスタンススケジュールの運用方法や命名規則について少し考えてみましょう ;)
インスタンススケジュールは後から編集できないことも踏まえて
- 命名規則例
{{ リージョン名 }}-{{ 起動や停止の時間 }}-{{ 頻度 }}
とすると良いでしょう :)
- 命名規則の具体例
-
s
= 開始時刻 (start)、e
= 停止時刻 (end) としています
-
### 東京リージョンにて、毎朝8時に起動、毎夜20時に停止
asia-northeast1-s08e20-daily
### 東京リージョンにて、毎夜18時に停止
asia-northeast1-e18-daily
### アイオワリージョンにて、毎週水曜の朝10時に起動、毎週水曜の夜16時に停止
us-central1-s10e16-wed
- 命名規則の解説
どのリージョンの設定なのか?が大事なので、名前にリージョンが入っているといいでしょう。
地区名でもいいですが、地区名とリージョン名を誰もがすぐに分かるわけではないのでリージョン名に統一しておくと良いと思います
時間や頻度に関しても重要なファクターなので入れておくと良いと思います
また -
をフィールド区切り文字の識別子として使えるように、起動と停止の時間の項目は書き方を工夫しています
まとめ
あくまで命名規則例なので、みなさんの設計の参考にしていただければと思います :)
Have a nice day! ;D
Discussion