⚖️
AWS ECS オートスケーリングの種類を学びました
負荷等に応じて、自動でコンテナの数を調整してくれるオートスケーリング機能に種類があることを学びました。
ターゲット追跡スケーリングポリシー
- ターゲットメトリクスを使用して Amazon ECS サービスをスケールする - Amazon Elastic Container Service
- メトリクスを選択して、ターゲット値(目標)を設定。ターゲット値を保つようにスケーリングしてくれる。
- スケールアウト/スケールイン時のタスク数計算はある程度余裕を持ってしてくれるらしい。ので、ターゲット値とメトリクスに誤差がでることも、、。
- 例:
- メトリクス: ECS CPU使用率(CpuUtilization)
- ターゲット値: 60%
- 重い処理が複数発生し、CPU使用率が60%を超えたときにスケールアウト!
ステップスケーリングポリシー
- CloudWatch アラームに基づく定義済みの増分を使用して Amazon ECS サービスをスケールする - Amazon Elastic Container Service
- 何段階かに分けてしきい値とそのしきい値を超えた場合のアクションを設定しておく方法。
- AWS的にはターゲット追跡スケーリングがおすすめらしい!ターゲット追跡スケーリングは、実際のメトリクス見ながらリアルタイムで調整してくれるので、容量の過多/不足が起こりにくい。
- 例:
条件 スケーリングアクション CPU使用率60% タスク+1 CPU使用率80% タスク+2
スケジュールされたスケーリング
- スケジュールされたアクションを使用して Amazon ECS サービスをスケールする - Amazon Elastic Container Service
- 特定の時間にタスク数を増減させる。予測可能な負荷の変化の場合に有効。
- ターゲット追跡スケーリングとの併用もおすすめ。ある程度予測できる部分は、スケジュールし、予測できない部分はターゲット追跡スケーリングに任せる。
- 例:
- 週末の深夜帯にアクセスが集中するので、週末22時~ タスク+2
- 平日日中はアクセスが少ないので、平日9時~ タスク-1
予測スケーリング
- 履歴パターンを使用して予測スケーリングで Amazon ECS サービスをスケールする - Amazon Elastic Container Service
- 過去の負荷データから日次/週次のパターン分析。分析を元に負荷の予測を立てて、スケーリングする。
- ↑のスケジュールされたスケーリングを自動でやってくれるようなイメージ。ターゲット追跡スケーリングポリシー/ステップスケーリングポリシーを利用した場合、負荷がかかってからスケールアウトするが、予測スケーリングの場合、負荷を予測してスケーリングしておくことができる!
- 例:
- 毎日10時~12時にアクセスが集中し、負荷が増えるサービスの場合、日々のパターン分析を元に、10時にあらかじめスケーリングしてくれる。
まとめ
- ターゲット追跡スケーリングポリシーさいこー
- 予測スケーリングもいいね!
Discussion