はじめまして、CI部の井出です。
負荷試験をDistributed Load Testing on AWS で実施したので、備忘録的にブログを書こうと思います。
概要
Distributed Load Testing on AWS とは
AWS公式ドキュメントによると以下の通りです。
大規模および負荷時のソフトウェアアプリケーションテストを自動化して、リリース前に性能上の潜在的なパフォーマンスの問題を特定するのに役立ちます。このソリューションは、一定のペースでトランザクションレコードを生成する数多くの接続ユーザーを作成およびシミュレートします。サーバーをプロビジョニングする必要はありません。
簡単に要約すると、準備に時間をかけることなく大規模なテストを実行し、性能の評価をすることができます。
実行方法
大まかな流れとしては以下の2点となります。
AWS CloudFormation スタックを作成する
テストシナリオを作成する
こちらの2点が完了するとテスト結果をDistributed Load Testing のコンソールで見ることができます。
設定
AWS CloudFormation スタックを作成
まずこちらの公式ページの「AWS コンソールで起動する」を押下します。
ログインしているAWSマネジメントコンソール、AWS CloudFormation スタック作成画面「テンプレートの指定」へと遷移します。
このときリージョンがバージニア北部となるので、必要に応じて任意のリージョンへと変更します。 他の設定はそのままで次へ進みます。
次の画面「スタックの詳細を指定」ではスタックの名前とパラメータ値を設定します。 パラメータ値は以下2項目となります。
- Distributed Load Testingのコンソールログインのための情報
- コンソールにログインする際のName とコンソールのURL が送付されるメールアドレスを入力します。
- 使用するVPCとSubnetの値
- Distributed Load Testing のリソースが作成されるVPC・Subnetを指定します。
- すでに作成済みのVPC・Subnetを使用したい場合、それぞれのリソースIDを入力します。
- 既存のVPC・Subnetを指定する必要がない場合、自動でCIDR Block の値が入力されているため、そのまま次へ進みます。
- Distributed Load Testing のリソースが作成されるVPC・Subnetを指定します。
続いて「スタックオプションの設定」です。 タグなどが必要な場合は入力します。
次へ進み、レビュー画面で設定に問題がないことを確認し、以下画像のIAMリソース作成承認のチェックボックスにチェックを入れ、スタックの作成をします。
スタックの作成が完了するまで10分程度かかります。
テストシナリオを作成
スタック作成完了後、パラメーターで入力したメールアドレスに以下のようなメールが届きます。 Console URL にアクセスし、メールに記載のUsername およびPassword でサインインします。 初回サインイン時はパスワードの変更が必要です。
コンソールログインをしたら、「CREATE TEAT」からテストの内容を入力します。
項目は12あります。
General Setting
- Name
- 任意の名前を入力します
- Description
- 実施するテストの説明を入力します
- Task Count
- テストのために起動されるDocker コンテナの数を設定します。上限は1000です。
- Concurrency
- タスクごとの同時実行数で、バーチャルユーザーの数となります
- Ramp Up
- Concurrencyで設定した数に到達するまでの時間を設定します
- Hold For
- Concurrencyで設定した数を保持する時間を設定します
- Run Now or Run on Schedule
- テストの実施タイミングを設定します。即時実行またはスケジュール実行(繰り返し可)を選択します。
Scenario
- Test Type
- Single HTTP Endpoint またはJMeter を選択します。Single HTTP Endpoint の場合、続く4項目を設定します。JMeter の場合、.jmx または.zip ファイルをアップロードしテストを実行します。今回はSingle HTTP Endpoint で行います。
- Http endpoint under test
- テストのターゲットとなるURLを入力します
- HTTP Method
- リクエストメソッドを選択します。デフォルトはGET です。
- HTTP Headers
- オプションでリクエストに含めるheader を設定します
- Body Payload
- オプションでリクエストに含めるbody を設定します
設定後、RUN NOW または SCHEDULE を押下し、テストを実行します。
実行結果
実行結果はコンソールで以下のように表示されます。
より詳細な結果は、Amazon S3、Amazon DynamoDB、Amazon CloudWatch Logs に出力されているので、そちらから確認できます。
片付け
テスト実行後、不要となるリソースを削除します。
作成したリソースのほとんどはAWS CloudFormation スタックの削除で一括削除が可能です。
以下のリソースはAWS CloudFormation スタックに含まれないため、不要であれば手動で削除します。
- Amazon DynamoDB テーブル
- Amazon S3 バケット
- Amazon CloudWatch Logs ロググループ
- Amazon ECR リポジトリ
まとめ
今回、Distributed Load Testing on AWS の実施方法を記載いたしました。
どなたかの参考になればと思います。