AWS Auto Scaling のアイコン

AWS Auto Scaling

EC2、ECS、DynamoDB などのリソースを需要に応じて自動スケーリングするサービス

何ができるか

AWS Auto Scaling は、アプリケーションの需要に応じて EC2 インスタンス、ECS タスク、DynamoDB テーブル、Aurora レプリカなどのリソース数を自動的に増減するサービスです。CPU 使用率やリクエスト数などのメトリクスに基づいてスケーリングポリシーを設定し、負荷が高いときはリソースを追加、低いときは削減します。パフォーマンスの維持とコスト最適化を両立できます。

どのような場面で使うか

EC サイトのセール時のアクセス急増への対応、業務時間帯と夜間でサーバー台数を変動させるコスト最適化、Web アプリケーションの応答時間を一定に保つためのリソース自動調整などに利用されています。予測スケーリングを使えば、過去のトラフィックパターンから需要を予測して事前にスケールアウトすることも可能です。 この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。

身近な例え

スーパーマーケットのレジに例えるとわかりやすいでしょう。お客さんが少ない時間帯はレジ (サーバー) を 2 台だけ開け、混雑してきたら自動的にレジを 5 台に増やします。空いてきたらまた 2 台に戻します。店長 (Auto Scaling) が常にお客さんの行列 (負荷) を監視し、最適なレジ台数を自動調整してくれます。

Auto Scaling とは

AWS Auto Scaling は、アプリケーションの負荷に応じてリソースの数を自動的に増減するサービスです。クラウドの大きなメリットの 1 つは、必要なときに必要なだけリソースを使えることです。Auto Scaling はこのメリットを自動化し、手動でサーバーを追加・削除する手間を省きます。過剰なリソースによるコストの無駄と、リソース不足によるパフォーマンス低下の両方を防ぎます。

スケーリングポリシー

Auto Scaling には主に 3 つのスケーリング方式があります。ターゲット追跡スケーリングは、CPU 使用率を 70% に維持するなど、目標値を設定するだけの最もシンプルな方式です。ステップスケーリングは、負荷の段階に応じて異なるスケーリング量を設定できます。スケジュールスケーリングは、毎朝 9 時にインスタンスを増やすなど、時間帯に基づいた設定が可能です。

予測スケーリング

予測スケーリングは、過去のトラフィックパターンを機械学習で分析し、将来の需要を予測して事前にスケールアウトする機能です。たとえば、毎日午前 10 時にアクセスが急増するパターンがある場合、10 時の少し前にインスタンスを増やしておきます。リアクティブ (事後対応) なスケーリングでは間に合わない急激な負荷増加にも対応できます。

はじめかた

EC2 の場合、まず起動テンプレートでインスタンスの設定を定義し、Auto Scaling グループを作成します。最小・最大・希望のインスタンス数を設定し、スケーリングポリシーを追加します。ターゲット追跡ポリシーで CPU 使用率 70% を目標に設定するのが最も簡単な始め方です。CloudWatch のメトリクスでスケーリングの動作を確認できます。

注意点

  • Auto Scaling 自体は無料だが、スケールアウトで追加されたリソース (EC2 インスタンスなど) には通常の料金が発生する
  • スケールインの際にインスタンスが終了されるため、ステートレスなアプリケーション設計が前提となる。セッション情報は ElastiCache や DynamoDB に外部化すること
  • クールダウン期間を適切に設定しないと、スケールアウトとスケールインが頻繁に繰り返される「フラッピング」が発生する場合がある

さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。