オートスケーリング
トラフィックや負荷に応じてコンピュートリソースを自動的に増減させる仕組み
AWSスケーリング
オートスケーリングとは
オートスケーリング (Auto Scaling) は、CPU 使用率、リクエスト数、キューの深さなどのメトリクスに基づいて、コンピュートリソースを自動的に増減させる仕組みである。トラフィックのピーク時にリソースを追加し、閑散時に削減することで、パフォーマンスとコストを最適化する。
AWS のオートスケーリング
| サービス | スケール対象 | メトリクス |
|---|---|---|
| EC2 Auto Scaling | EC2 インスタンス数 | CPU、ネットワーク、カスタム |
| ECS Service Auto Scaling | ECS タスク数 | CPU、メモリ、リクエスト数 |
| DynamoDB Auto Scaling | RCU/WCU | テーブルの使用率 |
| Lambda | 同時実行数 | 自動 (設定不要) |
| Aurora Serverless | ACU (Aurora Capacity Units) | DB 負荷 |
Lambda は自動的にスケールするため、オートスケーリングの設定が不要だ。これがサーバーレスの最大のメリットの 1 つ。
スケーリングポリシー
ターゲット追跡 (推奨)
「CPU 使用率を 70% に維持する」と宣言するだけで、AWS が自動的にリソースを増減する。
ステップスケーリング
CPU 使用率の範囲に応じて、追加するインスタンス数を段階的に設定する。
CPU 70〜80%: +1 インスタンス
CPU 80〜90%: +2 インスタンス
CPU 90%以上: +3 インスタンス
スケジュールスケーリング
予測可能なトラフィックパターン (毎朝 9 時にピーク) に対して、事前にスケールアウトする。
スケールインの注意点
スケールインは慎重に行う。急激にインスタンスを減らすと、残りのインスタンスに負荷が集中する。
ScaleInCooldown: スケールイン後の待機時間 (5〜10 分)MinCapacity: 最小インスタンス数 (0 にしない)- コネクションドレイニング: 処理中のリクエストを完了してから停止
Lambda のスケーリング
Lambda は自動スケールするが、同時実行数の上限 (デフォルト 1,000) がある。予約済み同時実行数 (ReservedConcurrentExecutions) で関数ごとの上限を設定し、1 つの関数が全体の枠を使い切るのを防ぐ。
詳しくは関連書籍を参照。