

# SUS 2 如何将云资源与您的需求相匹配？
<a name="sus-02"></a>

用户和应用程序使用您的工作负载及其他资源的方式可以帮助您找出改进措施，以实现可持续性目标。扩展基础设施以持续匹配需求，并验证您是否仅使用了支持用户所需的最少资源。使服务水平与客户需求保持一致。定位资源以限制用户和应用程序使用这些资源所需的网络。删除未使用的资产。为您的团队成员提供满足其需求的设备，并尽可能降低他们的可持续发展影响。

**Topics**
+ [SUS02-BP01 动态扩缩工作负载基础设施](sus_sus_user_a2.md)
+ [SUS02-BP02 使 SLA 与可持续性目标保持一致](sus_sus_user_a3.md)
+ [SUS02-BP03 停止创建和维护未使用的资产](sus_sus_user_a4.md)
+ [SUS02-BP04 根据其联网要求优化工作负载的地理位置](sus_sus_user_a5.md)
+ [SUS02-BP05 针对执行的活动优化团队成员资源](sus_sus_user_a6.md)
+ [SUS02-BP06 实施缓冲和节流以展平需求曲线](sus_sus_user_a7.md)

# SUS02-BP01 动态扩缩工作负载基础设施
<a name="sus_sus_user_a2"></a>

利用云的弹性并动态扩缩基础设施，以使云资源的供应与需求相匹配，避免在工作负载中过度调配容量。

**常见反模式：**
+ 您没有扩缩基础设施以匹配用户负载。
+ 您一直在手动扩缩基础设施。
+ 在扩展事件之后，您将保留增加的容量，而不是缩减容量。

 **建立此最佳实践的好处：**配置和测试工作负载弹性有助于有效地将云资源的供应与需求相匹配，并避免过度调配容量。您可以利用云中的弹性，在需求高峰期间和之后自动扩缩容量，以确保您只使用满足业务需求所需的适当数量的资源。

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

## 实施指导
<a name="implementation-guidance"></a>

 云让您能够通过各种机制灵活地动态扩展或缩减资源，以便满足不断变化的需求。供应与需求的最佳匹配提供了最低的工作负载环境影响。 

 需求可以是固定的，也可以是变化的，需要指标和自动化来确保管理不会变成沉重负担。应用程序可以通过修改实例大小来纵向扩展或缩减，通过修改实例数量来横向扩展或缩减，或者组合使用这两种方式。 

 您可以使用大量不同方法来实现资源的供需匹配。 
+  **目标跟踪方法：**监控您的扩缩指标，并根据需要自动增加或减少容量。 
+  **预测性扩缩：**根据每日和每周的趋势进行扩缩。 
+  **基于计划的方法：**根据可预测的负载变化设置自己的扩缩计划。 
+  **服务扩缩：**选择按设计可以原生扩缩或者将自动扩缩作为一项功能提供的服务（如无服务器）。 

 确定利用率低或无利用率的时段，缩减资源以消除过剩容量并提高效率。 

## 实施步骤
<a name="implementation-steps"></a>
+ 弹性可根据对您拥有的资源的需求来提供这些资源。实例、容器和函数提供了弹性机制，可以与自动扩缩结合使用，也可以作为服务的一项功能。AWS 提供了一系列自动扩缩机制，以确保工作负载可以在低用户负载期间快速轻松地缩减。以下是自动扩缩机制的一些示例：    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/wellarchitected/2023-04-10/framework/sus_sus_user_a2.html)
+  扩缩通常与计算服务（如 Amazon EC2 实例或 AWS Lambda 函数）相关。考虑使用非计算服务配置（如 [Amazon DynamoDB](https://aws.amazon.com/dynamodb/) 读写容量单元或 [Amazon Kinesis Data Streams](https://aws.amazon.com/kinesis/data-streams/) 分片）来满足需求。 
+  验证衡量扩展或缩减的指标已根据所部署的工作负载类型进行了验证。如果您正在部署一个视频转码应用程序，CPU 利用率预计为 100%，并且不应将此作为您的主要指标。如果需要，可以对扩缩策略使用[自定义指标](https://aws.amazon.com/blogs/mt/create-amazon-ec2-auto-scaling-policy-memory-utilization-metric-linux/)（如内存利用率）。要选择正确的指标，请考虑以下关于 Amazon EC2 的指导： 
  +  该指标应该是有效的利用率指标，并描述实例的繁忙程度。 
  +  该指标值必须随 Auto Scaling 组中的实例数量成比例地增加或减少。 
+  对 Auto Scaling 组使用[动态扩缩](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-scale-based-on-demand.html)而不是[手动扩缩](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-manual-scaling.html)。我们还建议您在动态扩缩中使用[目标跟踪扩缩策略](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-scaling-target-tracking.html)。 
+  确认工作负载部署可以处理扩展事件和缩减事件。为缩减事件创建测试场景，以确认工作负载的行为符合预期，并且不会影响用户体验（如丢失粘滞会话）。您可以使用[活动历史记录](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-verify-scaling-activity.html)验证 Auto Scaling 组的扩缩活动。 
+  评估您的工作负载以获得可预测的模式，并在您预期需求会发生预测和计划的变化时主动扩缩。借助预测性扩缩，您无需过度调配容量。有关详细信息，请参阅[使用 Amazon EC2 Auto Scaling 进行预测性扩缩](https://aws.amazon.com/blogs/compute/introducing-native-support-for-predictive-scaling-with-amazon-ec2-auto-scaling/)。 

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

 **相关文档：** 
+  [开始使用 Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/GettingStartedTutorial.html) 
+  [由机器学习提供支持的 EC2 预测式扩缩](https://aws.amazon.com/blogs/aws/new-predictive-scaling-for-ec2-powered-by-machine-learning/) 
+  [使用 Amazon OpenSearch Service、Amazon Data Firehose 和 Kibana 分析用户行为](https://aws.amazon.com/blogs/database/analyze-user-behavior-using-amazon-elasticsearch-service-amazon-kinesis-data-firehose-and-kibana/) 
+  [什么是 Amazon CloudWatch？](https://docs.aws.amazon.com/Amazon/latest/monitoring/WhatIs.html) 
+  [在 Amazon RDS 上使用性能详情监控数据库负载](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html) 
+  [介绍对 Amazon EC2 Auto Scaling 预测式扩缩的原生支持](https://aws.amazon.com/blogs/compute/introducing-native-support-for-predictive-scaling-with-amazon-ec2-auto-scaling/) 
+  [介绍 Karpenter - 高性能开源 Kubernetes Cluster Autoscaler](https://aws.amazon.com/blogs/aws/introducing-karpenter-an-open-source-high-performance-kubernetes-cluster-autoscaler/) 
+  [深入探讨 Amazon ECS 集群 Auto Scaling](https://aws.amazon.com/blogs/containers/deep-dive-on-amazon-ecs-cluster-auto-scaling/) 

 **相关视频：** 
+  [构建成本、能源和资源高效的计算环境](https://www.youtube.com/watch?v=8zsC5e1eLCg) 
+  [更好、更快、更便宜的计算：成本优化Amazon EC2（CMP202-R1）](https://www.youtube.com/watch?v=_dvh4P2FVbw) 

 **相关示例：** 
+  [实验室：Amazon EC2 Auto Scaling 组示例](https://github.com/aws-samples/amazon-ec2-auto-scaling-group-examples) 
+  [实验室：使用 Karpenter 实施自动扩缩](https://www.eksworkshop.com/beginner/085_scaling_karpenter/) 

# SUS02-BP02 使 SLA 与可持续性目标保持一致
<a name="sus_sus_user_a3"></a>

 根据您的可持续发展目标审查和优化工作负载服务水平协议（SLA），以便在继续满足业务需求的同时，尽量减少支持您的工作负载所需的资源。 

 **常见反模式：** 
+  工作负载 SLA 未知或模棱两可。 
+  只针对可用性和性能定义您的 SLA。 
+  对所有工作负载使用相同设计模式（如多可用区架构）。 

 **建立此最佳实践的好处：**使 SLA 与可持续发展目标一致，在满足业务需求的同时实现最佳资源使用率。 

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

## 实施指导
<a name="implementation-guidance"></a>

 SLA 定义云工作负载的预期服务水平，如响应时间、可用性和数据留存。它们影响云工作负载的架构、资源使用率和环境影响。定期审查 SLA，并做出权衡，显著减少资源使用，以换取可接受的服务水平降低幅度。 

 **实施步骤** 
+  定义或重新设计 SLA，在支持可持续性目标的同时满足而不是超出您的业务需求。 
+  做出权衡，显著降低可持续性影响，以换取可接受的服务水平降低幅度。 
  +  **可持续性和可靠性：**高可用性工作负载往往会消耗更多资源。 
  +  **可持续发展和性能：**使用更多资源来提升性能可能会对环境产生更大影响。 
  +  **可持续发展和安全：**过度安全的工作负载可能会对环境产生更大影响。 
+  使用优先考虑业务关键功能的设计模式（例如 [AWS](https://docs.aws.amazon.com/whitepapers/latest/microservices-on-aws/microservices-on-aws.html) 上的微服务），并允许非关键功能具有较低的服务水平（例如响应时间或恢复时间目标）。 

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

 **相关文档：** 
+  [AWS 服务水平协议（SLA）](https://aws.amazon.com/legal/service-level-agreements/?aws-sla-cards.sort-by=item.additionalFields.serviceNameLower&aws-sla-cards.sort-order=asc&awsf.tech-category-filter=*all) 
+  [Importance of Service Level Agreement for SaaS Providers](https://aws.amazon.com/blogs/apn/importance-of-service-level-agreement-for-saas-providers/) 

 **相关视频：** 
+ [提供可持续、高性能的架构](https://www.youtube.com/watch?v=FBc9hXQfat0)
+ [构建成本、能源和资源高效的计算环境](https://www.youtube.com/watch?v=8zsC5e1eLCg)

# SUS02-BP03 停止创建和维护未使用的资产
<a name="sus_sus_user_a4"></a>

停用您的工作负载中未使用的资产，以便减少支持您的需求所需的云资源数量，并最大限度地减少浪费。

 **常见反模式：** 
+  您没有分析应用程序以查找冗余或不再需要的资产。 
+  您没有移除冗余或不再需要的资产。 

 **建立此最佳实践的好处：**移除未使用的资产可释放资源并提高工作负载的整体效率。 

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

## 实施指导
<a name="implementation-guidance"></a>

 未使用的资产会消耗存储空间和计算能力等云资源。通过识别和消除这些资产，您可以释放这些资源，从而形成更高效的云架构。定期分析应用程序资产（例如预编制的报告、数据集和静态图像）和资产访问模式，以识别冗余、利用率低下的情况和潜在的淘汰目标。移除这些冗余资产以减少工作负载中的资源浪费。 

 **实施步骤** 
+  使用监控工具来识别不再需要的静态资产。 
+  在移除任何资产之前，评估移除它会对架构产生什么影响。 
+  制定计划并移除不再需要的资产。 
+  整合生成的重叠资产以消除冗余处理。 
+  更新应用程序，以便不再产生和存储不需要的资产。 
+  指示第三方停止生成和存储代您管理但不再需要的资产。 
+  指示第三方整合代表您生成的多余资产。 
+  定期审核工作负载以识别和移除未使用的资产。 

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

 **相关文档：** 
+  [优化您的 AWS 基础设施以实现可持续性，第 II 部分：存储](https://aws.amazon.com/blogs/architecture/optimizing-your-aws-infrastructure-for-sustainability-part-ii-storage/) 
+ [如何终止我的 AWS 账户中不再需要的活动资源？](https://aws.amazon.com/premiumsupport/knowledge-center/terminate-resources-account-closure/)

 **相关视频：** 
+ [如何检查我的 AWS 账户中是否有不再需要的活动资源，然后移除它们？](https://www.youtube.com/watch?v=pqg9AqESRlg)

# SUS02-BP04 根据其联网要求优化工作负载的地理位置
<a name="sus_sus_user_a5"></a>

为工作负载选择可缩短网络流量必须传输的距离的云位置和服务，并减少支持您的工作负载所需的总网络资源。

 ** 常见反模式： ** 
+  您根据自己所在的位置选择工作负载的区域。 
+  您可以将所有工作负载资源整合到一个地理位置中。 
+  所有流量都会流经您现有的数据中心。 

 **建立此最佳实践的好处：** 将工作负载放在接近用户的地方可以提供极低的延迟，同时减少网络中的数据移动并减小对环境的影响。 

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

## 实施指导
<a name="implementation-guidance"></a>

 AWS 云 基础设施围绕区域、可用区、置放群组和边缘站点（例如， [AWS Outposts](https://docs.aws.amazon.com/outposts/latest/userguide/what-is-outposts.html) 和 [AWS Local Zones](https://aws.amazon.com/about-aws/global-infrastructure/localzones/)）等位置选项而构建。这些位置选项负责维护应用程序组件、云服务、边缘网络和本地数据中心之间的连接。 

 分析您的工作负载中的网络访问模式，以便确定如何使用这些云位置选项和缩短网络流量必须传输的距离。 

## 实施步骤
<a name="implementation-steps"></a>
+  分析您的工作负载中的网络访问模式，以便确定用户如何使用您的应用程序。 
  +  使用监控工具，例如 [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/) 和 [AWS CloudTrail](https://aws.amazon.com/cloudtrail/)，以便收集有关网络活动的数据。 
  +  分析数据以确定网络访问模式。 
+  请根据以下关键元素，为您的工作负载部署选择区域： 
  +  **您的可持续发展目标：** 如 [区域选择](https://docs.aws.amazon.com/wellarchitected/latest/sustainability-pillar/region-selection.html)中所述。
  +  **数据所在位置：** 对于数据密集型应用程序（如大数据和机器学习），应用程序代码的运行应尽量接近数据。 
  +  **用户所在位置：** 对于面向用户的应用程序，选择接近您工作负载用户的一个或多个区域。
  + **其他制约：** 考虑成本和合规性等制约，如 [为工作负载选择区域时应考虑的事项](https://aws.amazon.com/blogs/architecture/what-to-consider-when-selecting-a-region-for-your-workloads/)中所述。
+  对常用资产使用本地缓存或 [AWS 缓存解决方案](https://aws.amazon.com/caching/aws-caching/) ，以提高性能，减少数据移动并减小对环境的影响。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/wellarchitected/2023-04-10/framework/sus_sus_user_a5.html)
+  使用有助于您在更接近工作负载用户的位置运行代码的服务：    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/wellarchitected/2023-04-10/framework/sus_sus_user_a5.html)
+  使用连接池来允许连接重用并减少所需资源。 
+  使用不依赖于持久连接和同步更新的分布式数据存储来保持一致性，从而为区域人口提供服务。 
+  用共享的动态容量代替预先配置的静态网络容量，并与其他订阅用户共享网络容量的可持续性影响。 

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

 **相关文档：** 
+  [优化您的 AWS 基础设施以实现可持续性，第 III 部分：联网](https://aws.amazon.com/blogs/architecture/optimizing-your-aws-infrastructure-for-sustainability-part-iii-networking/) 
+  [Amazon ElastiCache 文档](https://docs.aws.amazon.com/elasticache/index.html) 
+  [什么是 Amazon CloudFront？](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html) 
+  [Amazon CloudFront 主要功能](https://aws.amazon.com/cloudfront/features/) 

 **相关视频：** 
+  [揭秘 AWS 上的数据传输](https://www.youtube.com/watch?v=-MqXgzw1IGA) 
+ [ 在新一代 Amazon EC2 实例上扩展网络性能 ](https://www.youtube.com/watch?v=jNYpWa7gf1A)

 **相关示例：** 
+  [AWS 联网研讨会](https://catalog.workshops.aws/networking/en-US) 
+ [ 针对可持续性设计 – 最大限度地减少跨网络的数据移动 ](https://catalog.us-east-1.prod.workshops.aws/workshops/7c4f8394-8081-4737-aa1b-6ae811d46e0a/en-US)

# SUS02-BP05 针对执行的活动优化团队成员资源
<a name="sus_sus_user_a6"></a>

优化提供给团队成员的资源，在支持其需求的同时最大程度地降低对环境可持续性的影响。

 **常见反模式：** 
+  忽略了团队成员使用的设备对云应用程序整体效率的影响。 
+  手动管理和更新团队成员使用的资源。 

 **建立此最佳实践的好处：**优化团队成员资源可以提高支持云的应用程序的整体效率。 

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

## 实施指导
<a name="implementation-guidance"></a>

 了解您的团队成员用来使用服务的资源、它们的预期生命周期，以及财务和可持续性影响。实施战略以优化这些资源。例如，在利用率高的可扩展基础设施上，而不是在利用率不高的强力单用户系统上，执行渲染和编译等复杂的操作。 

 **实施步骤** 
+  按照工作站和其他设备的使用方式对它们进行预置。 
+  使用虚拟桌面和应用程序串流来限制升级和设备要求。 
+  将处理器或内存密集型任务移至云端以利于其弹性。 
+  评估流程和系统对您的设备生命周期的影响，并选择在满足业务需求的同时最大限度减少设备更换需求的解决方案。 
+  对设备实施远程管理以减少所需的商务旅行。 
  +  [AWS Systems Manager Fleet Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/fleet.html) 是一种统一的用户界面（UI）体验，帮助您远程管理在 AWS 上或在本地运行的节点。 

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

 **相关文档：** 
+  [什么是 Amazon WorkSpaces？](https://docs.aws.amazon.com/workspaces/latest/adminguide/amazon-workspaces.html) 
+ [Amazon WorkSpaces 的成本优化器](https://docs.aws.amazon.com/solutions/latest/cost-optimizer-for-workspaces/overview.html)
+  [Amazon AppStream 2.0 文档](https://docs.aws.amazon.com/appstream2/) 
+  [NICE DCV](https://docs.aws.amazon.com/dcv/) 

 **相关视频：** 
+  [在 AWS 上管理 Amazon WorkSpaces 的成本](https://www.youtube.com/watch?v=0MoY31hZQuE) 

# SUS02-BP06 实施缓冲和节流以展平需求曲线
<a name="sus_sus_user_a7"></a>

缓冲和节流可展平需求曲线，并降低工作负载所需的预置容量。

 **常见反模式：** 
+ 在不需要的时候立即处理客户端请求。
+ 没有分析客户端请求的要求。

 **建立此最佳实践的好处：**展平需求曲线可降低工作负载所需的预置容量。降低预置容量即可减少能源消耗和减少对环境的影响。 

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

 展平工作负载需求曲线有助于降低工作负载的预置容量和减少对环境的影响。假设工作负载的需求曲线如下图所示。此工作负载有两个峰值，为了处理这些峰值，如橙色线所示预置资源容量。因为需要预置容量来处理这两个峰值，所以此工作负载所使用的资源和能量不是由需求曲线下的区域表示，而是由预置容量线下面的区域表示。 

![\[预置容量波形具有两个不同的峰值，需要高预置容量。\]](http://docs.aws.amazon.com/zh_cn/wellarchitected/2023-04-10/framework/images/provisioned-capacity-1.png)


 

 您可以使用缓冲和节流来修改需求曲线和弄平峰值，这意味着可以减少预置容量和消耗的能量。在客户端可以执行重试时实施节流。实施缓冲以存储请求并将处理任务往后推迟一段时间。 

![\[波形图显示了使用缓冲或节流创建平滑峰值的工作负载。\]](http://docs.aws.amazon.com/zh_cn/wellarchitected/2023-04-10/framework/images/provisioned-capacity-2.png)


 

 **实施步骤** 
+  分析客户端请求以确定如何对它们作出响应。要考虑的问题包括： 
  +  是否可以异步处理此请求？ 
  +  客户端是否具有重试能力？ 
+  如果客户端有重试能力，则您可以实施节流，它会告诉需求源，如果当前无法处理请求，则应稍后再试。 
  +  您可以使用 [Amazon API Gateway](https://aws.amazon.com/api-gateway/) 来实施节流。 
+  对于无法执行重试的客户端，则需要实施缓冲以展平需求曲线。缓冲会延迟请求处理，从而让以不同速率运行的应用程序可以有效通信。基于缓冲的方法使用队列或流来接受来自生产方的消息。然后消息将由使用方读取并处理，这样消息就能够以满足使用方业务需求的速率运行。 
  +  [Amazon Simple Queue Service（Amazon SQS）](https://aws.amazon.com/sqs/)是一项托管服务，提供允许单个使用方读取单个消息的队列。 
  +  [Amazon Kinesis](https://aws.amazon.com/kinesis/) 提供允许众多使用方读取相同消息的流。 
+  分析总体需求、变化率和所需的响应时间，以使所需节流或缓冲的大小适宜。 

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

 **相关文档：** 
+ [开始使用 Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-getting-started.html)
+ [使用队列和消息的应用程序集成](https://aws.amazon.com/blogs/architecture/application-integration-using-queues-and-messages/)

 **相关视频：** 
+ [为分布式应用程序选择适合的消息传递服务](https://www.youtube.com/watch?v=4-JmX6MIDDI)