現在弊社では常に一定の高負荷にさらされることが予想されるSaaSサービスを構築しており、サービスローンチにあたって負荷テストを実施しておきたいので、今回このソリューションを試してみることにしました。
今回はDistributed Load Testing on AWS
自体の検証が目的のため、テストする対象は弊社の環境に転がっていた適当なMockAPIにしました。(なのでテスト結果は面白くないです。)
デプロイ方法
-
スタックの作成画面が表示されますが、リージョンがus-east-1になってしまうので、デプロイ先を別のリージョンにしたい場合は、ここで切り替えてそのまま
次へ
をクリックします。
-
スタックの詳細を指定画面では
名前
とメールアドレス
が必須項目なので入力して、デプロイ先のVPC等を変えたい場合は指定されている通り設定します。今回は任意項目はすべてデフォルトのままとしました。
-
スタックオプションの指定ではタグやIAM Roleをお好みで設定します。今回はすべてデフォルトのまま次へ。
-
レビュー画面では
AWS CloudFormationによってIAMリソースが作成される場合があることを承認します。
のチェック入れて送信
をクリックします。
-
少し時間がかかりますが、これでデプロイは完了します。
コンソールでの操作
-
デプロイが完了したら設定したメールアドレスにコンソールのURLと初期パスワードが送られてくるので、パスワードをコピーしてURLをクリックします。
-
各種設定を行っていきます。左側が実行に関する設定で、右側が対象の設定(シナリオ)です。公式のガイドには説明が無いですが、書いてある英文を要約すると、
TaskCount
(コンテナの数)、Concurrency
(コンテナ内のバーチャルユーザーの数)を設定し、RameUp
の時間をかけてその値に到達し、Hold For
の時間その状態をキープするということらしいです。Task Count
の最大値が1000でConcurrency
の推奨が200なので、高負荷をかけたいときはそのくらいにとどめておくのが良さそうです。
-
結果は以下のように表示されます。グラフは1分刻みでしか表示できないようなので、短時間の実行では詳細なグラフは取れないようです。ただ、基本的な集計結果は表示されるので、これだけ簡単に負荷テストの環境を構築できるのであれば十分使えそうです
環境削除
デプロイされたCloudFormationのスタックを削除するとある程度消えますが、以下のリソースが残ってしまうので、手動で削除します。
- LogGroup
- S3 Bucket
- DynamoDB Table
以下のように対象スタックのリソースタブでステータス
でソートしてDELETE_SKIPPED
となっているリソースを片っ端から削除すれば漏れなく消せるかなと思います。
まとめ
かなり簡単に負荷テスト環境を構築することができました。実際の負荷テストに向けてもう少し設定をいじってみようと思います