最近なにかと負荷試験をしているSREエンジニアの @kio-ku です
突然ですが、どのようにして負荷試験の実行環境を用意しているでしょうか?
サーバを自前で用意したりと何かと準備に手間がかかる、、、
結果をまとめるのにも時間がかかって何かとカロリーが高いですよね
AWSが提供している、手軽に負荷試験の実行環境を用意できるソリューションが
AWS Distibution Load Testingです
AWS Distibution Load Testing(以下AWS DLT)とは?
概要
AWSが提供している、負荷試験のシナリオを実行できる環境を簡単に用意できるというもの。
リソースはCloudFormationのテンプレートを使用して作成でき、AWS Launch Wizardを使うこともできます
対応しているシナリオ
2029/09/22時点で下記の4種類からシナリオを選べます
- Single HTTP Endpoint
- URLやパラメータを指定して単一のエンドポイントにリクエストするだけ
- JMeter
- K6
- 2025/07あたりのv3.4.0のリリースでようやくサポートされ、より使いやすくなりました!
- Locust
ソースコード
OSSとして下記リポジトリで公開されてます
リリースサイクルを調べてみると
最近リリースが活発かつセキュリティパッチもしっかり当たっている点もGood👍
| 年 | リリース数 | 月あたり | リリース間隔(中央値) | うちセキュリティ修正のみ |
|---|---|---|---|---|
| 2021 | 3 | 0.3本 | 133日 | 0 |
| 2022 | 4 | 0.3本 | 94日 | 0 |
| 2023 | 5 | 0.4本 | 79日 | 0 |
| 2024 | 11 | 0.9本 | 29日 | 0 |
| 2025 | 18 | 1.5本 | 19日 | 8 |
| 2026 (9/19まで) | 26 | 3.0本 | 8日 | 16 |
アーキテクチャ
アーキテクチャの概要は上記の構成図の通り。
- フロントエンド
- 構成は3つから選べます
- CloudFront+S3
- ALB+ECS on Fargate
- ヘッドレス(管理画面のUIをzipでもらって自分のサーバにホスト)
- 特別な要件がなければコストの面からCloudFront+S3の構成を選ぶのが無難かなと思います
- 筆者の場合は、IP制限はかけたかったので自前でWAFを用意してCloudFrontにアタッチしてます
- 構成は3つから選べます
- バックエンド
- API GatewayやLambda、DynamoDBなどサーバレスで構成されています
- ここがシナリオ実行用のFargateを立ち上げる感じですね
- 負荷試験実行環境
- 実態はECS on Fargate
- フロントエンドで指定したパラメータとシナリオに沿って実際に負荷をかけていきます
- MCP Gateway
- AgentCore Gateway
- オプションなので必須ではないですが、試験結果をそのままAIに渡せるのでとってもラクです
- DevOpsAgentとの統合
- DLTがあるAWSアカウントにあるDevOpsAgentを使って結果の解析やボトルネックの調査もしてもらえるみたいです
- 使ったことないのであまり詳細はわからないですが、DevOpsAgentの料金は別途かかりそうです
費用の目安
フロントエンドをどのパターンにするかによって異なりますが、
CloudFront+S3の場合はランニングコストほぼ0です(IP制限を入れるならWAFの料金ぐらい
シナリオを実行すると、その結果を保存したCloudWatch ダッシュボードが作成されます
無料枠を超えた分は当然従量課金で、地味にお金がかかるので注意してください!
AWS DLTの画面上からシナリオを削除すれば一緒に消えるので、
結果を見る必要がなくなったシナリオは忘れず削除しておきましょう
デプロイ方法
AWS Launch Wizard でデプロイ
デプロイしたいAWSアカウントとリージョンにログインしておき、
こちらにあるボタンをクリックして、AWS Launch Wizardへ行きます
あとは、画面に沿ってパラメータを選んで待つだけでデプロイが完了します
完了したら指定したメアドにAWS DLTのWEB UIの情報とID/PWが来るのでそれを元にログインします
WAFでIP制限
WEB UIにはID/PWが、MCPにはアクセストークンが必要なのですが、
念には念をということで社内のIPからのみアクセスできるようにWAFをCloudFrontとAgentCore Gatewayにアタッチします
使ってみる
公式ドキュメント
負荷試験の実行
WEB UIにログインして Test Scenarios > New Senario をクリック
シナリオや各パラメータを設定して Save
すぐ実行したい場合は Run Now
できたシナリオのリンクを押して詳細へ飛び、Run Senario をクリックすると実行が始まります
実行前後でFargateを起動/停止があったりするので多少待ちます
結果の解析
WEB UI
Test Runsのタブの方で実行したテストの一覧が見れ、IDをクリックして詳細を見ることができます
リクエスト数や成功/失敗した数、レスポンスタイムなどを見ることができます
当然ですが、ここで見れるのはシナリオを実行して返ってきたレスポンスの結果なので
負荷をかけられた側のアプリケーションの情報については別途確認が必要です
MCP
こちらを参考にMCPを設定すると、AIがテスト結果を引っ張ってこれるようになります
使える機能的にもgetとlistという参照系だけなので安心して使えます!!
アクセストークンの有効期限は1時間です!!
お片付け
基本的にはCloudFormationのスタックを削除しますが、
いくつかリソースが残るので下記を参考に自分で消します
WAFをつけた人はスタックを削除する前に外しましょう
最後に
AWS DLTは負荷試験を実行するのにとっても便利なツールなのでぜひ使ってみてください!
OSSとして公開されており、リリースも活発になってきたので要望とかも聞いてもらえるかもですね
参考


