スケジュールスケーリングと予測スケーリング
スケジュールアクションで予測可能なトラフィック急増に備えてキャパシティを事前に確保し、予測スケーリングで負荷を自動的に予測します。
「スケジュールスケーリングと予測スケーリング」はCoddyKit上の無料AWS Solutions Architectレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAWS Solutions Architect学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AWS Solutions Architectコースには全4レッスンが含まれています。
リアクティブスケーリングの限界
動的スケーリングポリシー(ターゲット追跡とステップスケーリング)はリアクティブであり、メトリクスがすでにしきい値を超えた後に対応します。営業時間のピーク、月末のバッチ処理、ブラックフライデーのセールなど、既知で予測可能なトラフィックパターンでは、インスタンスの起動とウォームアップに数分かかるため、リアクティブスケーリングでは遅すぎます。スケジュールスケーリングと予測スケーリングは、負荷が発生する前に容量を先回りして調整することで、この問題に対応します。
スケジュールスケーリングアクション
スケジュールスケーリングアクションは、指定した日時、または繰り返し実行するcronスケジュールに従って、ASGの最小容量、最大容量、希望容量を変更します。負荷が増加する正確な時刻が分かっている場合に適しています。たとえば、予定されたマーケティングイベントの前に事前ウォームアップを行ったり、トラフィックが最小になる夜間にコスト削減のためスケールダウンしたりできます。スケジュールアクションは、指定時刻に現在の希望容量を上書きします。
aws autoscaling put-scheduled-update-group-action \
--auto-scaling-group-name 'MyAppASG' \
--scheduled-action-name 'MorningScaleUp' \
--recurrence '0 7 * * MON-FRI' \
--min-size 4 \
--desired-capacity 8 \
--max-size 20繰り返しアクションのCron構文
スケジュールされたアクションでは、Unix cron形式を使用します: minute hour day-of-month month day-of-week。時刻はすべてUTCです。一般的なパターンとして、スケールアップには0 8 * * 1-5(平日の朝08:00 UTC)、スケールダウンには0 20 * * *(毎晩20:00 UTC)などがあります。同じASGに複数のスケジュールアクションを作成することもできます。たとえば、毎日スケールアップするアクションと、スケールダウンするアクションをそれぞれ1つずつ設定できます。
# Scale down every night at 22:00 UTC
aws autoscaling put-scheduled-update-group-action \
--auto-scaling-group-name 'MyAppASG' \
--scheduled-action-name 'NightScaleDown' \
--recurrence '0 22 * * *' \
--min-size 2 \
--desired-capacity 2 \
--max-size 20一回限りのスケジュールアクションと繰り返しのスケジュールアクション
スケジュールアクションには、一回限り(特定の開始時刻に1回だけ実行)と繰り返し(cronスケジュールに従って実行)があります。一回限りのアクションは、製品リリースなど、将来の予定が決まっているイベントに最適です。繰り返しのアクションは、毎日または毎週のトラフィックサイクルのような定期的なパターンに対応します。また、繰り返しのアクションに開始時刻と終了時刻を設定して、指定した期間内だけスケジュールを自動的に有効化・無効化することもできます。
# One-time scale-up for a product launch event
aws autoscaling put-scheduled-update-group-action \
--auto-scaling-group-name 'MyAppASG' \
--scheduled-action-name 'ProductLaunchScaleUp' \
--start-time '2026-07-15T14:00:00Z' \
--min-size 10 \
--desired-capacity 20 \
--max-size 50動的ポリシーとの連携
スケジュールアクションと動的スケーリングポリシーは併用できます。スケジュールアクションは、設定した時刻に新しい基準キャパシティを設定します。その後、動的ポリシー(ターゲット追跡またはステップスケーリング)が、更新された最小値・最大値の範囲内でキャパシティを調整し続けます。たとえば、朝のスケジュールアクションでmin=4、desired=8に設定し、日中は負荷に応じてターゲット追跡が15までスケールアップし、夕方のスケジュールアクションでmin=2、desired=2に戻す、といった動作です。
予測スケーリングの概要
Predictive Scalingは、CloudWatchメトリクスから過去の負荷パターンを機械学習で分析し、将来必要となるキャパシティを予測します。予測された負荷が到達する前に、通常は5~60分前からスケールアウトアクションを先行してスケジュールします。Predictive Scalingは、毎日または毎週繰り返すトラフィックサイクルのあるワークロードに適しています。より多くのデータを収集するにつれて、予測を継続的に更新します。
Predictive Scalingの有効化
ASGにPredictiveScalingポリシーをアタッチすると、Predictive Scalingを有効にできます。指定するのはメトリクスの組み合わせです。つまり、スケーリングの要因となる負荷メトリクス(CPUやALBのリクエスト数など)と、各インスタンスで追跡するスケーリングメトリクスです。AWSは負荷メトリクスを予測し、スケーリングメトリクスを目標値に維持するために必要なインスタンス数を算出します。
aws autoscaling put-scaling-policy \
--auto-scaling-group-name 'MyAppASG' \
--policy-name 'PredictiveScalingPolicy' \
--policy-type PredictiveScaling \
--predictive-scaling-configuration '{
'MetricSpecifications': [{
'TargetValue': 40.0,
'PredefinedMetricPairSpecification': {
'PredefinedMetricPairType': 'ASGCPUUtilization'
}
}],
'Mode': 'ForecastAndScale'
}'Predictive Scalingのモード
Predictive Scalingには2つのモードがあります。ForecastOnlyは、キャパシティを実際には変更せずに予測を生成するため、自動スケーリングを適用する前に予測を確認するのに役立ちます。ForecastAndScaleは、予測を生成するとともに、キャパシティの変更を自動的に適用します。まず数週間ForecastOnlyを使用して精度を検証し、その後ForecastAndScaleに切り替えてください。AWSでは、最初の予測を生成する前に、少なくとも24時間分のメトリクスデータが必要です。
バッファ時間と最大キャパシティバッファ
Predictive Scalingはスケールアウトアクションを先行して実行しますが、SchedulingBufferTimeを設定すると、インスタンスをさらに早くウォームアップできます。SchedulingBufferTimeを5分に設定すると、予測によって必要とされる時刻の5分前にキャパシティが追加されます。また、MaxCapacityBufferを設定して、予測された必要量を超えてASGが一定の割合までスケールできるようにすることもできます。これにより、予測誤差に対する余裕を確保できます。
Predictive Scalingとターゲット追跡の組み合わせ
変動するものの予測可能なワークロードには、両方を組み合わせる方法が推奨されます。Predictive Scalingは、予想される周期的な負荷に対応するため、あらかじめキャパシティを配置します。一方、Target Tracking Scalingは、予測を超える予期しない急増に対応します。両者を組み合わせることで、先行対応と事後対応の両方を実現できます。ASGは、両ポリシーによるスケールアウト推奨値のうち、より保守的なものを安全に適用します。
各スケーリング方式を選択するタイミング
トラフィックの急増が完全に予測可能で、正確な時刻(イベント起因または営業時間に基づくパターン)が分かっている場合は、Scheduled Scalingを使用します。パターンは繰り返すものの正確な時刻が変動する可能性がある場合は、MLがパターンを自動的に学習するPredictive Scalingを使用します。予期しない負荷に備える常時稼働の動的な安全策として、Target Trackingを使用します。負荷が完全にランダムな場合は、ターゲット追跡またはステップスケーリングだけに任せます。SAA-C03試験では、運用効率が最も高い方法を選ばせる問題がよく出題されます。繰り返し発生する周期的なワークロードでは、Predictive Scalingが適しています。
理解度チェック
このレッスンで学んだAWS Solutions Architect(SAA-C03)の概念について、理解度を確認しましょう。
レッスンのまとめ
このレッスンでは、Scheduled Scalingがcron式を使用して既知の時刻にASGのキャパシティを変更し、予測可能なイベントや繰り返し発生する営業時間のパターンに適していること、Predictive Scalingが過去のCloudWatchデータを機械学習し、負荷が到達する前に先行してスケールすること、そしてPredictive + Target Trackingを組み合わせることで先行対応と事後対応の両方を実現し、最も回復力の高いスケーリング戦略を構築できることを学びました。次は、制御されたデプロイのためのInstance RefreshとLifecycle Hooksについて説明します。
よくある質問
「スケジュールスケーリングと予測スケーリング」レッスンは無料ですか?
はい。「スケジュールスケーリングと予測スケーリング」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AWS Solutions Architectコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AWS Solutions Architectコースには全4レッスンが含まれています。
「スケジュールスケーリングと予測スケーリング」で何を学びますか?
スケジュールアクションで予測可能なトラフィック急増に備えてキャパシティを事前に確保し、予測スケーリングで負荷を自動的に予測します。 ブラウザで直接実行するハンズオンコードでAWS Solutions Architectを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
AWS Solutions Architectを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAWS Solutions Architectは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「スケジュールスケーリングと予測スケーリング」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAWS Solutions Architectレッスンでコードを書いて実行できますか?
はい。すべてのAWS Solutions Architectレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 起動テンプレートと ASG の設定
- スケーリングポリシー:ターゲット追跡とステップスケーリング
- スケジュールスケーリングと予測スケーリング
- インスタンスリフレッシュとライフサイクルフック