

# 最佳实践
<a name="sus-bp"></a>

**Topics**
+ [区域选择](sus-region-selection.md)
+ [符合需求](sus-user-behavior-patterns.md)
+ [软件和架构](sus-software-architecture-patterns.md)
+ [数据管理](sus-data-patterns.md)
+ [硬件和服务](sus-hardware-patterns.md)
+ [流程和文化](sus-development-deployment-patterns.md)

# 区域选择
<a name="sus-region-selection"></a>

为工作负载选择区域会显著影响其 KPI，包括性能、成本和碳足迹。为了提高这些 KPI，您应该根据业务需求和可持续性目标为工作负载选择区域。

 以下问题主要针对安全方面的注意事项。（有关可持续性问题的列表和最佳实践，请参阅[附录](a-sustainability.md)。）


| SUS 1：您如何为工作负载选择区域？ | 
| --- | 
| 为工作负载选择区域会显著影响其 KPI，包括性能、成本和碳足迹。为了提高这些 KPI，您应该根据业务需求和可持续性目标为工作负载选择区域。 | 

# 符合需求
<a name="sus-user-behavior-patterns"></a>

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

 以下问题主要针对可持续性方面的注意事项：


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

使用用户负载扩展基础设施：确定利用率低或无利用率的时段，缩减资源以减少过剩容量并提高效率。

根据可持续性目标调整 SLA：定义和更新服务等级协议（SLA），例如可用性或数据留存期，以最大限度地减少支持工作负载所需的资源数量，同时继续满足业务需求。

减少未使用资产的创建和维护：分析应用程序资产（例如预编制的报告、数据集和静态图像）和资产访问模式，以识别冗余、利用率低下的情况和潜在的淘汰目标。整合具有冗余内容的生成资产（例如，具有重叠或共用数据集和输出的月度报告），以减少重复输出时消耗的资源。淘汰未使用的资产（例如，已停售产品的图片）以释放消耗的资源，并减少用于支持工作负载的资源数量。

针对用户位置优化工作负载的地理位置：分析网络访问模式以识别您的客户建立连接的地理位置。选择可减少网络流量必须传输的距离的区域和服务，以减少支持您的工作负载所需的总网络资源。

针对执行的活动优化团队成员资源：优化提供给团队成员的资源，在支持其需求的同时最大程度地降低对可持续性的影响。例如，在利用率高的共享云桌面上，而不是在利用率不高的强力单用户系统上，执行渲染和编译等复杂的操作。

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

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

 以下问题主要针对可持续性方面的注意事项。


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

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

移除或重构工作负载组件的用处很低或根本没用：监控工作负载活动，以确定一定时间内各个组件的利用率的变化。移除未使用且不再需要的组件，并重构利用率低的组件，以限制资源浪费。

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

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

使用最有效地支持数据访问和存储模式的软件模式和架构：了解数据在工作负载中被使用、被用户使用、被传输和存储的方式。选择相应的技术以最大限度地减少数据处理和存储要求。

# 数据管理
<a name="sus-data-patterns"></a>

 以下问题主要针对可持续性方面的注意事项。


| SUS 4：您如何利用数据管理策略和模式来支持可持续性目标？ | 
| --- | 
|  实施数据管理实践以减少支持工作负载所需的预置存储，以及使用存储所需的资源。了解您的数据，并使用能够更有效地支持数据的商业价值及其使用方式的存储技术和配置。当需求减少时，将数据移到更高效、性能更低的存储中，并删除不再需要的数据。  | 

实施数据分类策略：对数据进行分类以了解其对业务结果的重要性。使用此信息来确定何时可以将数据移动到更节能的存储，或者何时可以安全删除数据。

使用支持数据访问和存储模式的技术：使用最能支持您的数据访问和存储方式的存储技术，以在支持您的工作负载的同时最大限度地减少预置资源。例如，固态硬盘（SSD）比磁性驱动器更耗能，应该仅用于活跃的数据使用场景。对不常访问的数据使用节能的存档级存储。

使用生命周期策略删除不必要的数据：管理所有数据的生命周期并自动执行删除时间表，以最大限度地减少工作负载的总存储需求。

最大限度地减少数据块存储中的过度预置：要尽可能减少总预置存储，请创建大小分配适合工作负载的数据块存储。随着数据的增长，使用弹性卷扩展存储，而无需调整附加到计算资源的存储大小。定期检查弹性卷并缩小过度预置的卷，以适应当前数据大小。

删除不需要或多余的数据：仅在必要时复制数据，以最大程度地减少消耗的总存储空间。使用备份技术在文件和数据块级别进行重复数据删除。限制使用独立驱动器冗余阵列（RAID）配置，除非需要满足 SLA。

使用共享文件系统或对象存储来访问通用数据：采用共享存储和单一事实来源，以避免重复数据删除并降低工作负载的总存储需求。仅在需要时从共享存储中获取数据。分离未使用的卷以释放资源。最大限度地减少跨网络的数据移动：使用共享存储和访问区域数据存储中的数据，以最大限度地减少支持工作负载数据移动所需的总网络资源。

仅在难以重新创建时备份数据：为了最大限度地减少存储消耗，仅备份具有商业价值或满足合规性要求所必需的数据。检查备份策略并在恢复方案中排除没有价值的临时存储。

# 硬件和服务
<a name="sus-hardware-patterns"></a>

寻找机会，通过更改硬件管理实践来降低工作负载可持续性影响。最大限度地减少预置和部署所需的硬件数量，并为各项工作负载选择最高效的硬件和服务。

 以下问题主要针对可持续性方面的注意事项。


| SUS 5：您如何选择并使用架构中的云硬件和服务来支持自己的可持续性目标？ | 
| --- | 
|  寻找机会，通过更改硬件管理实践来降低工作负载可持续性影响。最大限度地减少预置和部署所需的硬件数量，并为各项工作负载选择最高效的硬件和服务。  | 

使用最少的硬件来满足您的需求：通过使用云的功能，您可以对工作负载实施进行频繁更改。在需求变化时更新已部署的组件。

使用影响最小的实例类型：持续监控新实例类型的发布并利用能效改进，包括那些旨在支持特定工作负载（例如机器学习训练和推理以及视频转码）的实例类型。

使用托管服务：托管服务将维持已部署硬件的高平均利用率和可持续性优化的责任转移给 AWS。使用托管服务将服务的可持续性影响分散到服务的所有租户，从而减少您的个人份额。

优化您对 GPU 的使用：图形处理单元（GPU）可能是高功耗的来源，许多 GPU 工作负载是高度可变的，例如渲染、转码以及机器学习训练和建模。仅在需要时运行 GPU 实例，并在不需要时自动停用它们，以最大限度地减少资源消耗。

# 流程和文化
<a name="sus-development-deployment-patterns"></a>

寻找机会，通过更改开发、测试和部署实践来降低可持续性影响。

 以下问题主要针对可持续性方面的注意事项。


| SUS 6：您的组织流程如何支持您的可持续性目标？ | 
| --- | 
|  寻找机会，通过更改开发、测试和部署实践来降低可持续性影响。  | 

采用可以快速引入可持续性改进的运营：在将潜在潜在改进部署到生产环境之前，对其进行测试和验证。在计算改进的潜在未来收益时，考虑测试成本。开发低成本的测试运营，以实现细微的改进。

使您的工作负载处于最新状态：最新的操作系统、库和应用程序可以提高工作负载效率，并促进更高效技术的采用。最新的软件可能还包括更准确地衡量工作负载对可持续性的影响的功能，因为供应商提供的功能是为了满足其自身的可持续性目标。

提高构建环境的利用率：使用自动化功能和基础设施作为代码，在需要时启动预生产环境，并在不使用时将其关闭。一种常见模式是安排与开发团队成员的工作时间相吻合的可用时段。休眠是一个有用的工具，它可以保存状态，并且只在需要时才快速将实例上线。使用具有容量爆增的实例类型、竞价型实例、弹性数据库服务、容器和其他技术，使开发和测试能力与使用相一致。

使用托管式设备场进行测试：使用托管式设备场将硬件制造和资源使用的可持续性影响分散到多个租户。托管式设备场提供多种设备类型，使您能够支持不太受欢迎的较旧硬件，并避免不必要的设备升级对客户可持续性的影响。