

# バックエンド
<a name="back-end"></a>

バックエンドは、テスト用の負荷を生成するために使用するコンテナイメージのパイプラインと負荷テストエンジンで構成されます。フロントエンドを介してバックエンドとやり取りします。さらに、テストごとに起動された AWS Fargate 上の Amazon ECS タスクは、一意のテスト識別子 (ID) でタグ付けされます。これらのテスト ID タグは、このソリューションのコストをモニタリングするのに役立ちます。詳細については、「*AWS Billing and Cost Management ユーザーガイド*」の「[User-Defined Cost Allocation Tags](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/custom-tags.html)」を参照してください。

## コンテナイメージのパイプライン
<a name="container-image-pipeline"></a>

このソリューションでは、[Amazon Linux 2023](https://aws.amazon.com/linux/amazon-linux-2023/) で構築されたコンテナイメージを、[Taurus](https://gettaurus.org/) 負荷テストフレームワークがインストールされたベースイメージとして使用します。Taurus は、JMeter、K6、Locust、および他のテストツールをサポートするオープンソースのテスト自動化フレームワークです。AWS は、Amazon Elastic Container Registry (Amazon ECR) のパブリックリポジトリのイメージをホストします。ソリューションはこのイメージを使用し、AWS Fargate クラスター上の Amazon ECS でタスクを実行します。

詳細については、このガイドの「[Container image customization](https://docs.aws.amazon.com/solutions/latest/distributed-load-testing-on-aws/container-image.html)」セクションを参照してください。

## テストのインフラストラクチャー
<a name="testing-infrastructure"></a>

ソリューションは、メインの CloudFormation テンプレートに加えて、複数のリージョンでテストを実行するために必要なリソースを起動するためのリージョン用のテンプレートを提供します。ソリューションは Amazon S3 にこのテンプレートを保存し、そのリンクはウェブコンソールに表示されます。各リージョンスタックには、VPC、AWS Fargate クラスター、ライブデータを処理するための Lambda 関数が含まれています。

追加のリージョンにテストインフラストラクチャをデプロイする方法の詳細については、このガイドの「[マルチリージョンデプロイ](https://docs.aws.amazon.com/solutions/latest/distributed-load-testing-on-aws/multi-region-deployment.html)」セクションを参照してください。

## 負荷テストエンジン
<a name="load-testing-engine"></a>

分散負荷テストソリューションでは、Amazon Elastic Container Service (Amazon ECS) と AWS Fargate を使用して、複数のリージョンにまたがる数千の接続ユーザーをシミュレートし、ある持続頻度で HTTP リクエストを生成します。

テストパラメータは、付属のウェブコンソールを使用して定義します。ソリューションは、これらのパラメータを使用して JSON のテストシナリオを生成し、Amazon S3 に保存します。テストスクリプトとテストパラメータの詳細については、このセクションの「[テストタイプ](design-considerations.md#test-types)」を参照してください。

AWS Step Functions ステートマシンでは、AWS Fargate クラスターで Amazon ECS タスクを実行してモニタリングします。AWS Step Functions ステートマシンには、ecr-checker AWS Lambda 関数、task-status-checker AWS Lambda 関数、task-runner AWS Lambda 関数、task-canceler AWS Lambda 関数、results-parser AWS Lambda 関数が含まれます。ワークフローの詳細については、このガイドの「[Test workflow](https://docs.aws.amazon.com/solutions/latest/distributed-load-testing-on-aws/test-workflow.html)」セクションを参照してください。テスト結果の詳細については、このガイドの「[Test results](https://docs.aws.amazon.com/solutions/latest/distributed-load-testing-on-aws/test-results.html)」セクションを参照してください。テストキャンセルワークフローの詳細については、このガイドの「[Test cancellation workflow](https://docs.aws.amazon.com/solutions/latest/distributed-load-testing-on-aws/test-cancel-workflow.html)」セクションを参照してください。

ライブデータを選択すると、ソリューションは、そのリージョンの Fargate タスクに対応する CloudWatch Logs で、リージョンごとに real-time-data-publisher Lambda 関数を起動します。その後、ソリューションはデータを処理してから、メインスタックを起動したリージョン内の AWS IoT Core のトピックに公開します。詳細については、このガイドの「[Live data](https://docs.aws.amazon.com/solutions/latest/distributed-load-testing-on-aws/live-data.html)」セクションを参照してください。