🍵

AWSのAuto Scaling系のサービス体系が意味不明だったので自分用に整理しておく

に公開

AWS Auto Scaling と Application Auto Scaling と EC2 Auto Scaling って別物なの?というはなしです。

きっかけ

DynamoDBのオートスケールは、実はDynamoDBに直接付属する機能ではなく Application Auto Scaling というサービスらしいと聞いたので、調べてみることにしました。
https://docs.aws.amazon.com/ja_jp/autoscaling/application/userguide/what-is-application-auto-scaling.html

調べてみたら意味不明だった

Application Auto Scaling に触ってみようと思いAWSコンソールで検索してみると、、、

AWS Auto Scaling...?名前違くない?」と思い開いてみたら、、、
https://aws.amazon.com/jp/autoscaling/

EC2とか書いてあるけどEC2のAuto Scalingは個別のサービスだったはず、と思ってぐぐってみたら、、、
https://docs.aws.amazon.com/ja_jp/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html
Amazon EC2 Auto Scaling

意味がわからなくなってきたので、AWSのサービス一覧を調べてみたら、、、

Application Auto Scaling はやっぱり存在しない?でも最初に貼ったように公式ドキュメントには載っている。

本当に意味不明。。。

生成AIに聞いてみた

ここまでで、Amazon EC2 Auto Scaling Application Auto Scaling AWS Auto Scaling の3つのサービス出てきて関係性が全く分かりません。
人類には手が余ると判断してClaude先生に聞いてみました。

Claude先生の教え

AWS Auto Scaling、Application Auto Scaling、Amazon EC2 Auto Scalingの関係

これら3つのAWSオートスケーリングサービスの関係を整理します:

1. Amazon EC2 Auto Scaling

  • 最も古いオートスケーリングサービス
  • EC2インスタンス専用のスケーリングサービス
  • Auto Scalingグループを使ってEC2インスタンスの数を自動的に増減
  • 独自のAPIとコンソールインターフェースを持つ
  • 主にインフラレベルのスケーリングに使用

2. Application Auto Scaling

  • EC2以外の様々なAWSサービスのスケーリングに対応
  • 対象サービス: ECS、DynamoDB、Aurora、Lambda、AppStream、SageMakerなど
  • 独立したコンソールインターフェースはない(各サービスのコンソール内で設定)
  • バックエンドAPIとして機能し、各AWSサービスの自動スケーリング機能を支える
  • サービスレベルのスケーリングに使用

3. AWS Auto Scaling

  • 最も新しいサービスで、複数のリソースタイプを一元管理するためのサービス
  • 「Auto Scalingプラン」を提供し、複数のリソースのスケーリングを統合的に設定可能
  • EC2 Auto ScalingとApplication Auto Scalingの上位レイヤーとして機能
  • 独自のコンソールインターフェースがある
  • アプリケーション全体のスケーリングを統合的に管理

サービス間の関係

  • AWS Auto Scalingは、EC2 Auto ScalingとApplication Auto Scalingの両方を活用する「統合レイヤー」
  • Application Auto Scalingは各サービスのバックエンドで動作し、直接操作することは少ない
  • 実際の環境では、これらを組み合わせて使用することが一般的:
    • EC2 Auto Scalingでインフラ(EC2インスタンス)をスケーリング
    • Application Auto Scalingで各サービス(ECS、DynamoDB等)をスケーリング
    • 必要に応じてAWS Auto Scalingで複数リソースを統合管理

これらのサービスは互いに補完関係にあり、それぞれが異なるレベルとスコープでオートスケーリング機能を提供しています。

なるほど、つまり、、、

  1. 最初のEC2用は専用のオートスケーリングサービス(Amazon EC2 Auto Scaling)が作られた
  2. それ以降のサービスはまとめて1つのサービス(Application Auto Scaling)にした
  3. その後、統一されたインターフェースで使えるように管理用のサービス(AWS Auto Scaling)を作った

ということですね。分かりにくいよ!!

注意点

これまでの話だと AWS Auto Scaling が最強っぽく見えますが、はっきりいってこのサービスには将来性がないと思います。というのも、

  • 少なくとも私はこのサービスを使っているという話を聞いたことがない
    • 検索してもAmazon EC2 Auto Scalingしかでてこない
  • 2018年リリースのサービスなのに、未だにApplication Auto Scalingの対象サービスの全てをカバーしていない
    • SageMakerに対応してないの致命傷でしょ
  • 最新アプデ(2024年)が、AWS Auto ScalingからAmazon EC2 Auto Scalingへのマイグレーション機能
    • もう使うなと言っているとしか思えないですね

まとめ

  • Amazon EC2 Auto Scaling
    • EC2インスタンス専用のAuto Scalingサービス
    • コンソール上はEC2のメニューの中にある
  • Application Auto Scaling
    • EC2以外のAWSサービス用のAuto Scalingサービス
    • コンソール上では見えない(各サービスの機能に紛れている)
  • AWS Auto Scaling
    • Amazon EC2 Auto ScalingとApplication Auto Scalingを統一された視点から設定できるサービス
    • コンソール上で単独のサービスとして存在する
    • 説明だけ読むと最強に見えるが、実態は将来性が期待できないので注意が必要

ということで、Auto Scalingを設定するために AWSコンソールで検索AWS Auto Scalingを使用する という選択を安易にしないように気をつけたいと思います。
そして結局は机上で複雑なサービス名を覚えるよりも、Auto Scalingしたい対象のサービスで個別に実際に設定してみるのが一番分かりやすいし実用的ってことですね!

NCDCエンジニアブログ

Discussion