

# PERF01-BP06 使用基准测试来推动制定架构决策
PERF01-BP06 使用基准测试来推动制定架构决策

 对现有工作负载的性能进行基准测试，了解工作负载在云中的表现情况，并根据这些数据推动制定架构决策。

 **常见反模式：**
+  启用普通的基准测试，而这些基准测试并不能反映出工作负载的特征。
+  将客户反馈和看法作为唯一的基准。

 **建立此最佳实践的好处：**对当前实现进行基准测试可以衡量性能改进。

 **在未建立这种最佳实践的情况下暴露的风险等级：**中 

## 实施指导
实施指导

 结合使用基准测试与综合测试，评测工作负载组件的性能。相比负载测试，基准测试通常可以更快速地设置，并且适用于评估特定组件的技术。基准测试通常在新项目开始时进行，因为此时您还没有用于进行负载测试的完整解决方案。

 您可以构建自己的自定义基准测试，也可以使用行业标准测试（如 [TPC-DS](http://www.tpc.org/tpcds/)），对工作负载进行基准测试。行业基准测试适用于比较不同的环境。对于在架构中想要执行的特定类型操作，自定义基准测试十分有用。

 进行基准测试时，为了确保获得有效的结果，预热测试环境尤为重要。多次运行同一基准测试，确保捕获一段时间内的所有差异。

 由于基准测试运行速度通常比负载测试快，它们可以在部署管道的早期使用，并能更快地提供有关性能偏差的反馈。评估组件或服务的重要更改时，可以使用基准测试快速了解是否有合理的理由来执行更改。结合使用基准测试与负载测试这一点很重要，因为负载测试能告知工作负载在生产环境中的表现如何。

### 实施步骤
实施步骤
+  规划和定义：
  +  为基准测试定义目标、基准、测试场景、指标（如 CPU 利用率、延迟或吞吐量）和 KPI。
  +  关注用户在用户体验方面的要求，以及响应时间和可访问性等因素。
  +  确定适用于工作负载的基准测试工具。可以使用与工作负载兼容的 [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 等 AWS 服务或第三方工具。
+  配置和检测：
  +  设置环境并配置资源。
  +  实施监控和日志记录来捕获测试结果。
+  基准测试和监控：
  +  执行基准测试并在测试期间监控指标。
+  分析和记录：
  +  记录基准测试过程和测试结果。
  +  对结果进行分析，确定瓶颈、趋势和需要改进的方面。
  +  利用测试结果制定架构决策并调整工作负载。这可能包括更改服务或采用新功能。
+  优化并重复：
  +  根据基准测试调整资源配置和分配。
  +  调整后重新测试工作负载，验证改进情况。
  +  记录经验教训，并重复该过程，确定其他需要改进的方面。

## 资源
资源

 **相关文档：**
+  [AWS 架构中心](https://aws.amazon.com/architecture/) 
+  [AWS Partner Network](https://aws.amazon.com/partners/) 
+  [AWS 解决方案库](https://aws.amazon.com/solutions/) 
+  [AWS Knowledge Center](https://aws.amazon.com/premiumsupport/knowledge-center/) 
+  [Amazon CloudWatch RUM](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-RUM.html) 
+  [Amazon CloudWatch Synthetics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries.html) 
+  [Genomics workflows, Part 5: automated benchmarking](https://aws.amazon.com/blogs/architecture/genomics-workflows-part-5-automated-benchmarking/) 
+  [Benchmark and optimize endpoint deployment in Amazon SageMaker AI JumpStart](https://aws.amazon.com/blogs/machine-learning/benchmark-and-optimize-endpoint-deployment-in-amazon-sagemaker-jumpstart/) 

 **相关视频：**
+  [AWS re:Invent 2023 - Benchmarking AWS Lambda cold starts](https://www.youtube.com/watch?v=bGMEPI-va-Q&ab_channel=AWSEvents) 
+  [Benchmarking stateful services in the cloud](https://www.youtube.com/watch?v=rtW4a4DvcWU&ab_channel=AWSEvents) 
+  [这是我的架构](https://aws.amazon.com/architecture/this-is-my-architecture/) 
+  [Optimize applications through Amazon CloudWatch RUM](https://www.youtube.com/watch?v=NMaeujY9A9Y) 
+  [Demo of Amazon CloudWatch Synthetics](https://www.youtube.com/watch?v=hF3NM9j-u7I) 

 **相关示例：**
+  [AWS 示例](https://github.com/aws-samples) 
+  [AWS SDK 示例](https://github.com/awsdocs/aws-doc-sdk-examples) 
+  [分布式负载测试](https://aws.amazon.com/solutions/implementations/distributed-load-testing-on-aws/) 
+  [Measure page load time with Amazon CloudWatch Synthetics](https://github.com/aws-samples/amazon-cloudwatch-synthetics-page-performance) 
+  [Amazon CloudWatch RUM Web Client](https://github.com/aws-observability/aws-rum-web) 