🙌

サーバレス系開発者がAuto Scalingについてまとめてみる

2021/05/31に公開

普段、AWSを使っていわゆるサーバレス的なアーキテクチャで開発をしています。
ただし、教養として(?)AWSのいろいろを知っておかねばならない気がしています。
今回はなんとなく苦手意識のあったAuto Scalingについてまとめてみることにしました。

BlackBelt資料をかなり参考にさせてもらってます。
【AWS Black Belt Online Seminar】Amazon EC2 Auto Scaling and AWS Auto Scaling - YouTube https://www.youtube.com/watch?v=o01IOnVvRxM

BlackBeltの内容から更に要約してみた感じです。

本記事で説明すること

BlackBeltでは以下の点が説明されています。

1.Auto Scalingサービスのコンセプト
2.Auto Scalingの基礎知識
3.主要機能:スケーリングの整理
4.Auto Scalingを使ってみる
5.こんなときどうする? - 各種機能の紹介

今回は、1-3だけピックアップしてお伝えします。

AWS Auto Scaling is 何

  • AWS Auto Scalingとは、インスタンスやクラスタ等のキャパシティをいい感じに保ってくれるサービス

必要なinput

  • こちらで設定するのは一つ。「希望容量」を設定すること

機能とoutput

  • AWS Auto Scalingがやってくれることは3つだけ
    • 「希望容量と現実容量の差分監視」「スケールアウト」「スケールイン」

optionの説明

スケーリングオプション

  • 「希望容量と現実容量の差分監視」の動作定義を「スケーリングオプション」という。
  • 「スケーリングオプション」は3種類ある。
  • 動的スケーリング、予測スケーリング、スケジュールスケーリング。

動的スケーリング

  • 動的スケーリングの設定方法は2種類ある。

    • しきい値か目標値。
  • しきい値を超えたらスケールアウトするか、目標値に達するまでスケールアウトし続けるか、といった違い。

    • 例えば、前者は「CPU使用率が50を超えたら1台追加」後者は「CPU使用率を40に維持するのに必要なら1台追加」

予測スケーリング

  • 予測スケーリングの設定方法は1つだけ。
    • 2周間分のメトリクスを分析し、次の2日の需要を予測し、予測した結果でスケジュールして台数を増減する

スケジュールスケーリング

  • スケジュールスケーリングの設定方法は2つある。
    • 一回だけ、定期的な設定。cronみたいなもん。
    • MinCapacityかMaxCapacityか両方を指定して、それに応じて指定タイミングでスケールイン・スケールアウトする。

で?

できることはわかったけどどれにすればいいの?という話しについて。

  • 予測スケーリングと動的スケーリングをセットで使うのがおすすめ。
    • 大まかなキャパシティ増減は予測スケーリングで対応できる。
    • そのうえで実際の不可に対して不足した分を目標値設定で補充する。
      • つまり、「予測の通り動かす」「ただしCPU利用率を40%に維持するのに必要なら1台追加」8割位は予測でカバーできそう。
      • ただ、これはEC2にしか使えない。予測スケーリングがEC2でしか使えないので。
  • EC2以外なら動的スケーリングだけを使う。

参考資料

Discussion