

# 软件和架构模式
<a name="a-sus-software-architecture-patterns"></a>

**Topics**
+ [SUS 3 您如何利用软件和架构模式来支持您的可持续发展目标？](w2aac19c15b9b5.md)

# SUS 3 您如何利用软件和架构模式来支持您的可持续发展目标？
<a name="w2aac19c15b9b5"></a>

实施用于执行负载平滑和保持已部署资源始终如一的高利用率的模式，以最大限度地减少资源消耗。由于用户行为会随着时间的推移而发生变化，因此组件可能会因缺乏使用而变得空闲。修改模式和架构以整合未充分利用的组件，从而提高整体利用率。停用不再需要的组件。了解工作负载组件的性能，并优化消耗资源最多的组件。注意客户用来访问您服务的设备，并实施相应的模式以最大限度地减少设备升级需要。 

 最佳实践： 

# SUS03-BP01 针对异步和计划作业优化软件和架构
<a name="sus_sus_software_a2"></a>

 使用高效的软件设计和架构来尽可能减少每个工作单元所需的平均资源。实施可促成均匀的组件利用率的机制，以减少任务之间的空闲资源并最大限度地减少负载峰值的影响。 

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

## 实施指导
<a name="implementation-guidance"></a>
+  不需要立即处理的队列请求。 
+  提高序列化程度以扁平化整个管道的利用率。 
+  修改单个组件的容量，防止空闲资源等待输入。 
+  创建缓冲区并建立速率限制，以使外部服务的使用更顺畅。 
+  使用最高效的可用硬件进行软件优化。 
+  使用队列驱动的架构、管道管理和按需型实例工件，最大限度地提高批处理的利用率。 
+  安排任务以避免同时执行导致的负载峰值和资源争用。 
+  将作业安排在一天中碳强度最低的时段中处理。 

## 资源
<a name="resources"></a>

 **相关文档：** 
+  [什么是 Amazon Simple Queue Service？](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html) 
+  [什么是 Amazon MQ？](https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/welcome.html) 
+  [基于 Amazon SQS 进行扩展](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-using-sqs-queue.html) 
+  [什么是 AWS Step Functions？](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) 
+  [什么是 AWS Lambda？](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 
+  [将 AWS Lambda 与 Amazon SQS 配合使用](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html) 
+  [什么是 Amazon EventBridge？](https://docs.aws.amazon.com/eventbridge/latest/userguide/what-is-amazon-eventbridge.html) 

 **相关视频：** 
+  [AWS 上的可持续构建](https://www.youtube.com/watch?v=ARAitMSIxc8) 
+  [迁移到事件驱动型架构](https://www.youtube.com/watch?v=h46IquqjF3E) 

# SUS03-BP02 删除或重构很少或没有使用的工作负载组件
<a name="sus_sus_software_a3"></a>

 监控工作负载活动以识别各个组件的利用率随时间的变化。移除未使用且不再需要的组件，并重构利用率低的组件，以限制资源浪费。 

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

## 实施指导
<a name="implementation-guidance"></a>
+  分析功能正常的组件上的负载（使用事务流和 API 调用等指标），以识别未使用和未充分利用的组件。 
+  停用不再需要的组件。 
+  重构未充分利用的组件。 
+  将未充分利用的组件与其他资源整合以提高利用效率。 

## 资源
<a name="resources"></a>

 **相关文档：** 
+  [什么是 AWS X-Ray？](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) 
+  [什么是 Amazon CloudWatch？](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 
+  [使用 ServiceLens 监控应用程序的运行状况](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ServiceLens.html) 
+  [自动清理 Amazon ECR 中未使用的镜像](https://aws.amazon.com/blogs/compute/automated-cleanup-of-unused-images-in-amazon-ecr/) 

 **相关视频：** 
+  [AWS 上的可持续构建](https://www.youtube.com/watch?v=ARAitMSIxc8) 

# SUS03-BP03 优化消耗最多时间或资源的代码区域
<a name="sus_sus_software_a4"></a>

 监控工作负载活动以识别消耗最多资源的应用程序组件。优化在这些组件中运行的代码，以最大限度地减少资源使用和提高性能。 

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

## 实施指导
<a name="implementation-guidance"></a>
+  根据资源使用情况监控性能，以将单个工作单元的资源需求高的组件确定为优化目标。 
+  使用代码分析器确定使用时间最长或使用资源最多的代码区域作为优化目标。 
+  将算法替换为产生相同结果的更高效版本。 
+  使用硬件加速来提高执行时间长的代码块的效率。 
+  对工作负载使用最高效的操作系统和编程语言。 
+  删除不必要的排序和格式。 
+  使用数据传输模式，根据数据更改的频率和使用方式，最大限度地减少使用的资源。例如，将状态更改信息推送到客户端，而不是让它消耗资源来轮询和接收无价值的“无更改”消息。 

## 资源
<a name="resources"></a>

 **相关文档：** 
+  [什么是 Amazon CloudWatch？](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 
+  [什么是 Amazon CodeGuru Profiler？](https://docs.aws.amazon.com/codeguru/latest/profiler-ug/what-is-codeguru-profiler.html) 
+  [FPGA 实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/fpga-getting-started.html) 
+  [在 AWS 上进行构建所需工具的 AWS 开发工具包](https://aws.amazon.com/tools/) 

 **相关视频：** 
+  [AWS 上的可持续构建](https://www.youtube.com/watch?v=ARAitMSIxc8) 

# SUS03-BP04 优化对客户设备的影响
<a name="sus_sus_software_a5"></a>

 了解客户用来使用您服务的设备、它们的预期生命周期，以及更换这些组件对财务和可持续性的影响。实施软件模式和架构，以最大限度地减少客户更换和升级设备的需求。例如，使用与旧硬件和操作系统版本向后兼容的代码实现新功能，或管理有效负载的大小，使其不超过目标设备的存储容量。 

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

## 实施指导
<a name="implementation-guidance"></a>
+  盘点客户使用的设备。 
+  使用具有代表性硬件集的托管式设备场进行测试，以了解更改的影响，并迭代开发以最大限度增加支持的设备数。 
+  在构建有效负载时考虑网络带宽和延迟，并实施有助于您的应用程序在低带宽、高延迟链路上良好运行的功能。 
+  预处理数据有效负载，以减少本地处理要求并限制数据传输要求。 
+  在服务器端执行计算密集型活动（例如图像渲染），或使用应用程序串流来改善旧设备上的用户体验。 
+  对输出进行分段和分页，尤其是对于交互式会话，以管理有效负载并限制本地存储要求。 

## 资源
<a name="resources"></a>

 **相关文档：** 
+  [什么是 AWS Device Farm？](https://docs.aws.amazon.com/devicefarm/latest/developerguide/welcome.html) 
+  [Amazon AppStream 2.0 文档](https://docs.aws.amazon.com/appstream2/) 
+  [NICE DCV](https://docs.aws.amazon.com/dcv/) 
+  [Amazon Elastic Transcoder 文档](https://docs.aws.amazon.com/elastic-transcoder/) 

 **相关视频：** 
+  [AWS 上的可持续构建](https://www.youtube.com/watch?v=ARAitMSIxc8) 

# SUS03-BP05 使用最能支持数据访问和存储模式的软件模式和架构
<a name="sus_sus_software_a6"></a>

 了解数据在工作负载中的使用方式、用户使用数据的方式，以及数据的传输和存储方式。选择相应的技术以最大限度地减少数据处理和存储要求。 

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

## 实施指导
<a name="implementation-guidance"></a>
+  分析您的数据访问和存储模式。 
+  以高效的文件格式（如 Parquet）存储数据文件，防止进行不必要的处理（例如在运行分析时）并减少预置的总存储。 
+  使用可以原生处理压缩数据的技术。 
+  使用最能支持您的主导查询模式的数据库引擎。 
+  管理您的数据库索引以确保索引设计支持高效的查询执行。 
+  选择可减少消耗的网络容量的网络协议。 

## 资源
<a name="resources"></a>

 **相关文档：** 
+  [Athena 压缩支持文件格式](https://docs.aws.amazon.com/athena/latest/ug/compression-formats.html) 
+  [使用 Amazon Redshift 从列数据格式复制](https://docs.aws.amazon.com/redshift/latest/dg/copy-usage_notes-copy-from-columnar.html) 
+  [在 Firehose 中转换您的输入记录格式](https://docs.aws.amazon.com/firehose/latest/dev/record-format-conversion.html) 
+  [AWS Glue 中 ETL 输入和输出的格式选项](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-format.html) 
+  [通过转换为列格式提高 Amazon Athena 上的查询性能](https://docs.aws.amazon.com/athena/latest/ug/convert-to-columnar.html) 
+  [使用 Amazon Redshift 从 Amazon S3 加载压缩数据文件](https://docs.aws.amazon.com/redshift/latest/dg/t_loading-gzip-compressed-data-files-from-S3.html) 
+  [在 Amazon Aurora 上使用 Performance Insights 监控数据库负载](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_PerfInsights.html) 
+  [在 Amazon RDS 上使用 Performance Insights 监控数据库负载](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html) 
+  [AWS IoT FleetWise](https://aws.amazon.com/about-aws/whats-new/2021/11/aws-iot-fleetwise-transferring-vehicle-data-cloud/) 

 **相关视频：** 
+  [AWS 上的可持续构建](https://www.youtube.com/watch?v=ARAitMSIxc8) 