Associate Cloud Engineer(Google Cloud) 無料問題 6 / 10 ・ 分野2: クラウド ソリューションの計画と実装
MIG で動かすアプリは、VM が起動してから処理できる状態になるまで約5分かかる。アクセスは毎日ほぼ同じ時刻に増える。負荷が来た時点で、新しい VM がすでに処理できる状態にしておきたい。インスタンス グループの台数を自動で増減させる機能(autoscaler)のページに合う設定はどれか。
- 負荷の増える時刻に始まるスケジュールを作り、初期化期間は既定の 60 秒にする
- 予測自動スケーリングを有効にし、初期化期間は既定の 60 秒にする
- 負荷の増える時刻に始まるスケジュールを作り、初期化期間を 300 秒にする
- 予測自動スケーリングを有効にし、初期化期間を 300 秒に設定する
正解と解説を見る
正解: D
正解の理由
予測自動スケーリングは、過去のデータから今後の負荷を予測し、予測した負荷の前に MIG をスケールアウトして、負荷が来たときには新しいインスタンスが処理できるようにする。ページは、アプリの初期化に時間がかかる(初期化期間が2分を超えるなど)場合と、負荷が日や週の周期で予測どおりに変わる場合に最もよく働くと書く。初期化期間を 300 秒にすれば、予測自動スケーリングは予測した負荷の5分前に VM を作る。
違う選択肢
「負荷の増える時刻に始まるスケジュールを作り、初期化期間を 300 秒にする」… スケジュールに基づくスケーリングのページは、開始時刻になるとスケジュールが VM を作り始め、VM は開始時刻ちょうどには準備できていないので、起動と初期化にかかる時間だけ開始時刻を早めるよう書いている(作成から処理の開始まで10分かかるなら、必要な時刻の10分前にする)。開始時刻を負荷の増える時刻にそろえると、VM はその時刻から作られ始め、処理できるまでさらに約5分かかる。初期化期間の分だけ前倒しで VM を作るのは予測モードの働きで、スケジュールでの前倒しは開始時刻そのものを早めて行う。
「予測自動スケーリングを有効にし、初期化期間は既定の 60 秒にする」… ページは、予測モードでは初期化期間の分だけ前倒しで VM を作る(300 秒なら予測した負荷の5分前)と書いている。初期化期間の既定は 60 秒なので、そのままでは予測した負荷の1分前にしか VM が作られず、約5分かかるアプリは負荷が来た時点でまだ処理できない。
「負荷の増える時刻に始まるスケジュールを作り、初期化期間は既定の 60 秒にする」… スケジュールは開始時刻に VM を作り始めるので、負荷の増える時刻に始めると VM は負荷と同時に作られ始める。初期化期間も既定の 60 秒のままでは、スケールアウトの判断で初期化中の VM の使用率を無視する時間が実際の起動時間より短くなる。どちらの点でも、負荷が来た時点で処理できる状態にはならない。
初期化期間の扱い
スケジュールに基づくスケーリングも、開始時刻を初期化にかかる時間だけ早めれば、負荷の前に VM を用意できる。本問の選択肢のスケジュールは、どちらも負荷の増える時刻に始めている点が合わない。
初期化期間は、以前は「クールダウン期間」と呼ばれていた。スケールアウトの判断では初期化中の VM の使用率を無視し、スケールインの判断では初期化中の VM も含めた平均で決める。実際の初期化時間はいろいろな要因で変わるので、ページは実際にどれくらいかかるかを試して決めることを勧めている。
自動修復は、ヘルスチェックに落ちた VM を MIG が作り直す仕組みで、自動スケーリングとは独立して働く。スケールイン制御は、負荷が下がった直後にまた山が来る場合に、急に台数を減らしすぎないための設定である。どちらも負荷の前に VM を用意する仕組みではない。