タダです.
システム開発において負荷テストをかけてみるケースってあると思うのですが,ローカルだとマシンスペックが足りないかもってなったときに専用環境が欲しくなります.AWS は分散型の負荷テストを簡単に行うためのソリューションを提供しています.この記事では Distributed Load Testing on AWS を試してみたメモをまとめます.
AWS の負荷テストソリューション概要
Distributed Load Testing on AWS はアプリケーションのパフォーマンステストを大規模に自動化するためのソリューションです.
負荷テストソリューションの展開方法
Distributed Load Testing on AWS を展開するために専用の CloudFormation テンプレートを使用します.デフォルトではテンプレートはバージニアリージョンで展開されるようになっていますが,別リージョンでも展開可能です.今回は東京リージョンでやります.大体8分ほどでスタック作成が完了しました.


試しに負荷テストをかけてみる
負荷テストソリューション環境が作成された後,簡易なテストシナリオを作ります.以下がシナリオの主要パラメーターでそのまま RUN NOW からテスト実行しました.
- Name: <任意の名前>
- Description: <任意の説明>
- Task Count: <負荷をかける ECS タスク数>
- Concurrency: <タスク毎の同時接続数>
- Ramp Up: <設定した Concurrency 数に達するまでの時間>
- Hold For: <設定した Concurrency 数を保持する時間>
- HTTP endpoint under test: <テストを実行するターゲット URL>

テスト完了するとレポートが表示されます.ここで表示される情報の意味は以下のとおりです.
- Average Response Time: テストによって生成されたすべてのリクエストの平均応答時間 (秒)
- Average Latency: テストによって生成されたすべてのリクエストの平均レイテンシー (秒)
- Average Connection Time: テストで生成されたすべてのリクエストについて、ホストへの接続にかかった平均時間 (秒)
- Average Bandwidth: テストで生成されたすべてのリクエストの平均帯域幅
- Total Count: リクエストの総数
- Success Count: 成功したリクエストの総数
- Error Count: エラーの総数
- Requests Per Second: テストで生成されたすべてのリクエストの 1 秒あたりの平均リクエスト数
- Percentile Response Time: テストの応答時間のパーセンタイル値 (最大応答時間は 100 %、最小応答時間は 0 %)

まとめ
AWS の負荷テストソリューションの概要と簡単に試した結果をまとめました.簡単にテスト実行環境を用意してすぐに負荷をかけられるのは良いなと感じました.さらっとしか触られていないため色々試してみたいなと思います.