Distributed Load Testing on AWS を使ってみた

記事タイトルとURLをコピーする

はじめまして、CI部の井出です。
負荷試験をDistributed Load Testing on AWS で実施したので、備忘録的にブログを書こうと思います。

概要

Distributed Load Testing on AWS とは

AWS公式ドキュメントによると以下の通りです。

大規模および負荷時のソフトウェアアプリケーションテストを自動化して、リリース前に性能上の潜在的なパフォーマンスの問題を特定するのに役立ちます。このソリューションは、一定のペースでトランザクションレコードを生成する数多くの接続ユーザーを作成およびシミュレートします。サーバーをプロビジョニングする必要はありません。

aws.amazon.com

簡単に要約すると、準備に時間をかけることなく大規模なテストを実行し、性能の評価をすることができます。

実行方法

大まかな流れとしては以下の2点となります。

  1. AWS CloudFormation スタックを作成する

  2. テストシナリオを作成する

こちらの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 の値が入力されているため、そのまま次へ進みます。

続いて「スタックオプションの設定」です。 タグなどが必要な場合は入力します。

次へ進み、レビュー画面で設定に問題がないことを確認し、以下画像の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 の実施方法を記載いたしました。
どなたかの参考になればと思います。

井出 真悠子 (記事一覧)

2021年4月新卒入社

カスタマーサクセス部

2024 Japan AWS Jr. Champions