Auto Scalingの解説(AWS認定クラウドプラクティショナーシラバス用語)

Auto Scalingの解説(AWS認定クラウドプラクティショナーシラバス用語)
目次

Auto Scalingとは

AUTOSCALING.png

Auto Scaling(オートスケーリング)は、アプリケーションに対する負荷(トラフィックや処理要求)の増減に応じて、Amazon EC2インスタンスなどのAWSリソースの数を自動的に増やしたり(スケールアウト)、減らしたり(スケールイン)する機能・サービスです。ウェブサービスなどでは、時間帯やキャンペーン、突発的なニュースなどによってアクセス数は大きく変動します。ピーク時の最大アクセス数に合わせて常に多数のサーバーを稼働させておくと、アクセスが少ない時間帯にサーバーリソースが無駄になり、無駄なコストが発生してしまいます。逆に、コストを抑えるためにサーバー数を少なくしておくと、アクセス集中時にサーバーダウンやパフォーマンス低下を引き起こし、機会損失につながります。Auto Scalingを利用すれば、CPU使用率やネットワークトラフィックなどの指標(メトリクス)を監視し、あらかじめ設定した条件(例:「平均CPU使用率が70%を超えたらインスタンスを1台追加する」)に基づいて、必要な時に必要な分だけ自動的にリソースを調整できるため、パフォーマンスの維持とコストの最適化を同時に実現できます。

具体例

Auto Scalingの強力な効果は、以下のようなシナリオで発揮されます。

  • ECサイトのタイムセール: 普段はEC2インスタンス2台で安定稼働しているECサイトがあります。週末の夜に限定のタイムセールを行うとアクセスが激増することが予想されます。Auto Scalingを設定しておけば、トラフィックが増加してサーバーの負荷が上がったことを検知すると、自動的にインスタンスが4台、6台と追加され、顧客を待たせることなく処理を捌き切ります。セールが終わり負荷が落ち着くと、自動的に不要なインスタンスを削除し、元の2台に戻して余分な課金を防ぎます。
  • バッチ処理の自動伸縮: SQS(メッセージキュー)に溜まった画像処理タスクの数を監視し、キューにタスクが1000個以上溜まったら処理用のEC2インスタンスを自動で追加して処理を早め、キューが空になったらインスタンスを終了させるといった構成も可能です。
  • 障害復旧(セルフヒーリング): 負荷の増減だけでなく、「常に最低2台のインスタンスを稼働させる」と設定しておけば、万が一ハードウェア障害等で1台のインスタンスが停止してしまった場合、Auto Scalingがそれを検知して自動的に新しいインスタンスを起動し、可用性を維持してくれます。

もう少し詳しく

EC2向けの「Amazon EC2 Auto Scaling」を設定する際、主に3つの要素を定義します。1つ目は「起動テンプレート」で、新しく追加されるインスタンスのAMI(OS)、インスタンスタイプ、セキュリティグループなどの構成情報を指定します。2つ目は「Auto Scaling グループ」で、インスタンスを配置するVPCサブネットや、グループ内の最小容量(例:2台)、最大容量(例:10台)、希望する容量を定義します。3つ目は「スケーリングポリシー」で、いつ、どのような条件でインスタンスを増減させるかのルールを定めます。

スケーリングポリシーにはいくつか種類があります。「ターゲット追跡スケーリングポリシー」は、「平均CPU使用率を常に50%に維持する」ように自動調整する最も使いやすい方式です。「ステップスケーリング/シンプルスケーリング」は、CloudWatchのアラームをトリガーにして特定の条件で段階的に調整します。また、「スケジュールに基づくスケーリング」を使えば、「毎週月曜日の朝9時にアクセスが増えることが分かっているため、8時30分にインスタンスをあらかじめ増やしておく」といった、予測可能なトラフィック変動に対する事前のプロビジョニングも可能です。なお、Auto Scalingという概念はEC2だけでなく、DynamoDB(リード/ライトキャパシティの調整)やECS/EKS(コンテナタスクの調整)など、AWSの様々なサービスに組み込まれています(これらを総括して管理するサービスをAWS Auto Scalingと呼びます)。

試験でのポイント

AWS認定クラウドプラクティショナー(CLF-C02)試験において、Auto Scalingは「可用性」「スケーラビリティ」「コスト最適化」に関連する最重要キーワードの一つです。

  • スケールアウトとスケールアップの違い: Auto Scalingは基本的にサーバーの「台数」を増減させる水平スケーリング(スケールアウト/スケールイン)を行います。サーバー自体の性能(CPUやメモリ)を上げる垂直スケーリング(スケールアップ)とは異なることを明確に区別してください。
  • Elastic Load Balancing (ELB) との連携: Auto Scalingは、トラフィックを分散させるELBとセットで利用されるのが鉄板のアーキテクチャです。Auto Scalingで自動追加された新しいインスタンスは、自動的にELBの振り分け対象に登録されます。試験でもこの組み合わせ(ELB + Auto Scaling = 高可用性と耐障害性)がよく問われます。
  • コストとパフォーマンスのバランス: 「需要のピークに合わせて物理サーバーをプロビジョニングするとコストが無駄になる」というオンプレミスの課題を解決し、「必要な時に必要な分だけ」というクラウドならではの弾力性(Elasticity)を体現するサービスであることを理解しておきましょう。

関連する用語

Auto Scalingは増減したAmazon EC2インスタンスを管理します。そして、増減する複数のインスタンスに対して均等にユーザからのアクセスを振り分ける役割を持つのがElastic Load Balancing (ELB)です。また、Auto Scalingがインスタンスを増減させるタイミング(トリガー)を判断するために、CPU使用率などの監視データを提供し、アラームを発行するのがAmazon CloudWatchの役割となります。

読んだ内容を10問練習と実技で確認

記事で理解した用語を、StudyQuestの演習とクラウド実技ラボで定着させます。

10問練習 実技ラボ