概要
本記事では、Distributed Load Testing on AWS(DLT)のセットアップ手順を解説します。
DLTは、AWS上で手軽に大規模な負荷試験を実行できるソリューションで、複数の仮想ユーザーを同時に動作させることで本番環境に近い高負荷を再現できます。
例えば、新しいAPIをリリースする前に数千~数万リクエストを同時処理できるか検証したい場合や、EC2・RDS・Lambdaなどのリソースが想定負荷に耐えられるか確認したい場合に役立ちます。
AWS上で負荷試験を検討している方の参考になれば幸いです。
目次
1. デプロイ方法
1-1. ソリューションページへアクセス
まず、以下のリンクからDLTのページにアクセスします。
Distributed Load Testing on AWS – AWS ソリューション実装
ページ内の「AWS コンソールで起動する」をクリックします。
1-2. CloudFormationの起動
CloudFormationのスタック作成ページが開きます。
※ 初期表示のリージョンがバージニア北部になっている場合があるため、必要であれば東京リージョンに変更してください。
1-3. ステップ1:スタックの作成
特に変更する必要はないため、デフォルトのまま「次へ」をクリックします。
1-4. ステップ2:必須情報の入力
- スタック名
- ユーザ名
- メールアドレス
以上の3項目は必須です。入力後、「次へ」をクリックします。
1-5. ステップ3:オプション設定
特に設定を変更する必要はありません。「次へ」をクリックします。
1-6. ステップ4:確認と作成
設定内容を確認し、問題がなければ「送信」をクリックします。
2. 初回ログイン
2-1. 招待メールを確認
デプロイが完了すると、登録したメールアドレスに招待メールが届きます。
メールに記載されたログインURLにアクセスします。
2-2. ログイン
- ユーザ名:1-4で入力したもの
- パスワード:招待メールに添付されたもの
これらを入力してログインします。
2-3. DLTダッシュボードの表示
ログインに成功すると、DLTのダッシュボードが表示されます。
ここから負荷テストのシナリオを作成・実行できます。
3. テストの実行方法
ここからは、簡単にですがDLTで負荷テストを実行する手順を解説します。
※HTTP APIを事前に用意してください。
3-1. テストの作成
ダッシュボード上部の「CREATE TEST」をクリックします。
3-2. テスト設定
画面左側の設定項目に、テストの条件を設定します。
- Test Name:テストの名前
- Description:テストの説明
- Task Count:タスク数
- Concurrency:同時実行数
- Region:テストを実行するリージョン
- Ramp Up:どれくらいの時間をかけてユーザー数を増やしていくか。例えばConcurrencyを100に設定してRamp Upを10分に設定した場合、1分ごとに10人ずつユーザー数が増えていきます。
- Hold For:最大ユーザー数まで増えたあと、その状態をどのくらいキープするか。例えばHold Forを10分に設定した場合、最大ユーザー数に達したあと10分間その状態をキープします。
次に、テスト対象のHTTPエンドポイントを入力し、「RUN TEST」をクリックします。
3-3. テスト結果の確認
数分待つと、ダッシュボードにテスト結果が表示されます。
4. まとめ
今回はDLTのセットアップ手順を解説しました。事前に「AWSの負荷テストツールって複雑そう…」と身構えていたのですが、実際にやってみると想像以上にシンプルで、良い意味で拍子抜けしました。
ただ、実際の案件では細かい要件がありました。1つのAPIにつき合計45分間テストを実行し、15分ごとにリクエスト数を段階的に上げていく方式でした(最初の15分は毎秒5リクエスト、次の15分は毎秒10リクエスト、最後の15分は毎秒15リクエスト)。
DLTのみでは実現できないため、JMeterとDLTを組み合わせることを考えました。しかし、DLTは「決められた時間内に、できるだけ多くの負荷をかける」ことが得意な一方で、「リクエスト数を正確にコントロールする」ことが難しく、結局、JMeter + DLTの組み合わせでも要件を満たせないと判断し、最終的には複数台のEC2インスタンスを立ててJMeterを分散実行する方法に切り替えました。
ただ、今振り返ってみると、シナリオの設計をもう少し工夫すれば、JMeter + DLTでも実現できたかもしれません。次回同じような要件があれば、再挑戦してみたいと思います!