オートスケーリングとは
auto scaling(オートスケーリング)は、負荷や設定した条件に応じて、サーバーなどの台数や能力を自動で増減する仕組みです。指標・スケジュール・予測等を方針へ入力し、期待する容量を最小・最大の範囲で変えます。
台数を増減する水平拡張・縮小が一般的ですが、VM大きさ・CPU・メモリーを変えるvertical拡張・縮小を含めるサービスもあります。起動、アプリケーションウォームアップ、ヘルスチェック、負荷分散装置登録まで時間がかかり、トラフィック増加へ瞬時に追従する魔法ではありません。
自動スケーリングは「必要になってから作る」制御ループです。急増へ耐える最小容量、待ち行列、キャッシュ、レート制限を別に用意し、容量・割り当て量不足でも必ず増えるとは考えません。

制御ループの要素
要求比率、CPU、メモリー、待ち行列、遅延、業務固有の指標等を使います。
対象追跡、段階、しきい値、スケジュール、prediction等で期待する値を決めます。
最低待機容量、費用・割り当て量上限、現在の目標台数を明示します。
画像、設定、ネットワーク、役割、起動時データを再現可能にして新インスタンスを作ります。
アプリケーションがトラフィックを処理できるまで待ち、正常後に負荷分散装置へ加えます。
新規トラフィックを止め、処理を移し、段階的な停止後に容量を減らします。
指標選びが結果を決める
CPUはCPU処理中心の処理負荷へ有効でも、I/O待ち・待ち行列・データベース接続・external API上限を表さない場合があります。対象一台当たりの要求数、キュー内の最長待機時間、95パーセンタイル遅延等、容量と比例しやすい信号を選びます。
平均値は負荷が偏ったインスタンスを隠し、短いピークはサンプリングで消えます。集約、期間、欠測データ、遅れて届く指標、外れ値を確認します。
対象追跡・段階・スケジュール
対象追跡は指標を目標付近へ保つよう容量を調整します。段階拡張・縮小はしきい値超過量に応じて増減幅を変えます。予定済み拡張・縮小は予測できる時間帯の前に容量を用意します。
予測型は過去パターンから需要を見積もりますが、キャンペーンや障害トラフィックを完全予測しません。複数方針が同時に期待する容量へ作用するときの優先規則を確認します。
ウォームアップを含めてスケールアウトする
VM作成後もOS起動、コンテナープル、アプリケーション開始、キャッシュ充填、JIT、データベース移行・接続確立が必要です。ヘルスチェックを早く通し過ぎると、未準備インスタンスへトラフィックを送り遅延を悪化させます。
起動時を短くし、事前構築済み画像、最小容量、事前ウォームアップ、待ち行列で急増を吸収します。画像レジストリや設定サービスがボトルネックになることもあります。
クールダウンとヒステリシス
スケールアウト直後の指標へすぐ反応すると、まだ効果が出る前に追加インスタンスを大量起動します。クールダウン・インスタンスウォームアップで新容量の反映を待ちます。
同じしきい値で増減すると境界付近で頻繁な増減します。スケールアウトとスケールインのしきい値・評価時間を分け、スケールインをゆっくりにするヒステリシスを使います。
スケールインは安全に減らす
選択インスタンスへの新規要求を止め、既存接続・バックグラウンドジョブをドレイニングし、ローカル状態を外部へ移します。終了通知の猶予内に終わらない処理は再試行可能にします。
リーダー、一意シャード、データベースプライマリー、ライセンスにひもづく処理を無作為に消しません。終了方針と保護を設定し、手動メンテナンスとも競合させません。
ステートレスに近づける
セッション、アップロード、ジョブ状態、キャッシュwarmデータをインスタンスローカルへだけ置くと、スケールイン・置き換えで失います。共有データベース、オブジェクトストレージ、待ち行列、分散型キャッシュへ保存します。
外部状態保存が規模に追い付かなければ、アプリケーション層を増やしても性能は上がりません。接続プール、区画、レート制限、バックプレッシャーを設計します。
容量と割り当て量の上限
最大設定、アカウント割り当て量、IPアドレス、サブネット空き、ゾーン容量、インスタンス種類、ライセンス、予算により起動できない場合があります。代替処理インスタンス種類・ゾーン、容量予約、割り当て量監視を検討します。
自動スケーリングイベントログへ失敗理由を残し、「期待するが増えた」ことと「正常容量が増えた」ことを別指標にします。
コストとゼロ台までの縮小
スケールインは費用を減らせますが、最低容量、保存領域、負荷分散装置、データ転送等は残ります。ゼロ台までの縮小はアイドル費用を抑える一方、コールドスタートと最初の要求遅延を生みます。
費用だけを指標にするとSLAを破り、遅延だけを追うと過剰容量になります。業務優先度を最小・最大と方針へ反映します。
自動スケーリングは信号を方針へ入れ、期待する容量を上下限内で調整する制御ループです。ウォームアップ、正常性、割り当て量、ドレイニング、状態、下流容量、コストを含めて初めて安全に増減できます。
load balancer連携、metricによるinstance増減、health check・replacementの実装例:AWS EC2 Auto Scaling official documentation