Backend - AWS 上的分布式负载测试

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Backend

后端由容器镜像管道和用于生成测试负载的负载测试引擎组成。你通过前端与后端进行交互。此外,为每次测试启动的 AWS Fargate 上的 Amazon ECS 任务都标有唯一的测试标识符 (ID)。这些测试 ID 标签可用于帮助您监控此解决方案的成本。有关更多信息,请参阅 AWS Billing and Cost Management 用户指南中的用户定义成本分配标签

容器镜像管道

此解决方案使用使用 A mazon Linux 2023 构建的容器映像作为安装了 Ta ur us 负载测试框架的基础映像。Taurus 是一个开源测试自动化框架 JMeter,支持 K6、Locust 和其他测试工具。AWS 将此映像托管在亚马逊弹性容器注册表 (Amazon ECR) 的 Elastic Registry 公共存储库中。该解决方案使用此镜像在 AWS Fargate 集群上的 Amazon ECS 中运行任务。

有关更多信息,请参阅本指南的容器镜像自定义部分。

测试基础架构

除了主 CloudFormation 模板外,该解决方案还提供了一个区域模板,用于启动在多个区域运行测试所需的资源。该解决方案将此模板存储在 Amazon S3 中,并在 Web 控制台中提供指向该模板的链接。每个区域堆栈都包括一个 VPC、一个 AWS Fargate 集群和一个用于处理实时数据的 Lambda 函数。

有关如何在其他区域部署测试基础设施的更多信息,请参阅本指南的多区域部署部分。

负载测试引擎

分布式负载测试解决方案使用亚马逊弹性容器服务 (Amazon ECS) 和 AWS Fargate 来模拟多个区域的数千名并发用户,以持续的速度生成 HTTP 请求。

您可以使用随附的 Web 控制台定义测试参数。该解决方案使用这些参数生成 JSON 测试场景并将其存储在 Amazon S3 中。有关测试脚本和测试参数的更多信息,请参阅本节中的测试类型

AWS Step Functions 状态机在 AWS Fargate 集群中运行和监控 AWS ECS 任务。AWS Step Functions 状态机包括一个 ecr-checker AWS Lambda 函数、一个 AWS Lambda 函数、一个任务运行器 task-status-checker AWS Lambda 函数、一个任务取消器 AWS Lambda 函数和一个结果解析器 AWS Lambda 函数。有关工作流程的更多信息,请参阅本指南的测试工作流程部分。有关测试结果的更多信息,请参阅本指南的测试结果部分。有关取消考试工作流程的更多信息,请参阅本指南的 “取消考试工作流程” 部分。

如果您选择实时数据,则该解决方案将通过 CloudWatch 与该区域中的 Fargate 任务对应的日志在每个区域中启动 Lamb real-time-data-publisher da 函数。然后,该解决方案会处理数据并将其发布到您启动主堆栈的区域内的 AWS IoT Core 中的某个主题。有关更多信息,请参阅本指南的实时数据部分。