オートスケーリングには複数の種類があり、システムの特性や要件によって適切な方式を選ぶことが重要です。
代表的な分類として、インスタンスの台数を増減する「水平スケーリング(スケールアウト/イン)」と、インスタンスのスペック自体を変更する「垂直スケーリング(スケールアップ/ダウン)」があります。
さらにスケーリングのトリガー方法によって「動的スケーリング」「予測スケーリング」「スケジュールスケーリング」などに分類されます。
本記事では、オートスケーリングの種類、水平スケーリングと垂直スケーリングの違い、スケールアウト・スケールアップ・動的スケーリング・予測スケーリングなどについて解説していきます。
オートスケーリングの種類は「方向(水平/垂直)」と「トリガー方法」の2軸で分類される
それではまず、オートスケーリングの種類の分類体系について解説していきます。
オートスケーリングは「スケーリングの方向(水平・垂直)」と「スケーリングのトリガー方法(動的・予測・スケジュール)」という2つの軸で分類されます。
この分類を理解することで、システムの特性に最適なスケーリング戦略を選択できるようになります。
水平スケーリング(スケールアウト/スケールイン)の特徴
水平スケーリングとは、同じスペックのサーバーインスタンスを追加(スケールアウト)または削除(スケールイン)することで処理能力を調整する方式です。
水平スケーリングの最大の特徴は「無停止でスケーリングできること」であり、稼働中のインスタンスに影響を与えず新しいインスタンスを追加・削除できます。
理論的には無限にスケールできるため、大規模なWebサービスやマイクロサービスアーキテクチャに最適です。
ただしアプリケーションがステートレスで設計されていること(セッション情報を外部化するなど)が前提条件となります。
垂直スケーリング(スケールアップ/スケールダウン)の特徴
垂直スケーリングとは、既存のインスタンスのスペック(CPU・メモリ等)を上位のインスタンスタイプに変更(スケールアップ)または下位に変更(スケールダウン)する方式です。
| 比較項目 | 水平スケーリング | 垂直スケーリング |
|---|---|---|
| 方法 | インスタンス台数を増減 | インスタンスのスペックを変更 |
| 無停止対応 | 可能 | 通常は再起動が必要 |
| スケール上限 | 理論上なし | 最大インスタンスタイプまで |
| アプリの要件 | ステートレス設計が必要 | 設計変更不要の場合が多い |
| コスト効率 | 不要時に削減しやすい | 大型インスタンスはコスト高 |
| 適した用途 | Web層・APIサーバー | DBサーバー・レガシーシステム |
垂直スケーリングは設計変更が不要なためレガシーシステムに適していますが、スケールアップ時に再起動が必要になることが多く、無停止スケーリングが困難です。
動的スケーリングの仕組み
動的スケーリングはリアルタイムのメトリクスに基づいて自動でスケーリングする方式です。
CloudWatchのアラームがトリガーとなり、CPU使用率・リクエスト数・レスポンスタイムなどが設定した閾値を超えた場合にスケーリングアクションが発動します。
動的スケーリングはリアクティブ(事後対応)なアプローチであるため、急激なトラフィック増加に対してはインスタンス起動時間分の遅延が生じます。
予測スケーリングの仕組みと活用
予測スケーリング(Predictive Scaling)はAWSが提供する機械学習ベースのスケーリング機能です。
過去2週間のトラフィックパターンから将来の負荷を予測し、需要増加の前にプロアクティブ(事前対応)にスケーリングを実施します。
動的スケーリングと予測スケーリングを組み合わせることが最も効果的なアプローチです。定期的なパターンには予測スケーリングで事前対応し、想定外の負荷には動的スケーリングで事後対応するという二重の安全網が構築できます。
スケーリング戦略の選択と組み合わせ方
続いては、システムの特性に応じたスケーリング戦略の選択方法と、複数の戦略を組み合わせるベストプラクティスを確認していきます。
ユースケース別の最適なスケーリング戦略
Webアプリケーションの場合、水平スケーリング(スケールアウト)が基本戦略です。ALBと組み合わせてステートレスな設計でスケールアウトし、動的スケーリング+予測スケーリングを組み合わせます。
RDBMSの場合、垂直スケーリング(スケールアップ)が主体となります。Aurora等のマネージドDBではリードレプリカの追加という形で一部水平スケーリングも活用できます。
バッチ処理の場合、スケジュールスケーリングで処理時間帯に合わせて大量のインスタンスを起動し、完了後に削減するパターンが効果的です。
マルチレイヤースケーリングの設計
本番環境では複数のレイヤーでスケーリングを組み合わせることが重要です。
Webレイヤー(EC2 Auto Scaling)・キャッシュレイヤー(ElastiCacheのノード追加)・データベースレイヤー(Aurora Serverlessや読み取りスケーリング)・コンテナレイヤー(ECS/EKSのオートスケーリング)といった各レイヤーでスケーリングが連動することで、システム全体としての一貫したスケーラビリティが実現します。
まとめ
本記事では、オートスケーリングの種類、水平スケーリングと垂直スケーリングの違い、スケールアウト・スケールアップ・動的スケーリング・予測スケーリングなどについて解説しました。
オートスケーリングはスケーリングの方向(水平/垂直)とトリガー方法(動的/予測/スケジュール)の2軸で分類され、システムの特性と要件に合った組み合わせを選ぶことが最適化の鍵です。
Webアプリケーションでは水平スケーリング+動的・予測スケーリングの組み合わせが最も強力な戦略となり、各レイヤーでのスケーリングを組み合わせることで真のスケーラブルシステムが実現します。