

# 可持续性
<a name="sustainability"></a>

可持续性支柱侧重于环境影响，尤其是能源消耗和效率，因为它们是架构师在直接采取行动以减少资源使用时依据的重要杠杆。如需有关具体实施的说明性指导，请参阅 [《可持续性支柱》白皮书](https://docs.aws.amazon.com/wellarchitected/latest/sustainability-pillar/sustainability-pillar.html?ref=wellarchitected-wp).

**Topics**
+ [设计原则](sus-design-principles.md)
+ [定义](sus-def.md)
+ [最佳实践](sus-bp.md)

# 设计原则
<a name="sus-design-principles"></a>

 在云中实现可持续性有六个设计原则： 
+  **了解您的影响：** 衡量您的云工作负载的影响并为您的工作负载的未来影响建模。包括所有影响来源，例如客户使用您的产品所产生的影响，以及产品最终淘汰和停用所产生的影响。通过查看每个工作单元所需的资源和排放量，将生产性输出与云工作负载的总体影响进行比较。使用这些数据来建立关键绩效指标（KPI），评估在降低影响的同时提高生产力的方法，并估计提议的更改随时间的推移所产生的影响。 
+  **设定可持续性目标：** 对于每个云工作负载，建立长期可持续性目标，例如减少每个事务所需的计算和存储资源。针对现有工作负载的可持续性改进的投资回报进行建模，并为负责人提供投资于可持续性目标所需的资源。规划增长并构建您的工作负载，以便增长可降低影响强度（以适当的单位衡量，例如每用户或每事务）。目标可帮助您支持您的企业或组织更广泛的可持续发展目标、识别回归并确定潜在改进领域的优先级。
+  **实现利用率最大化：** 适当调整工作负载规模并实施高效设计，以确保高利用率并最大限度地提高底层硬件的能源效率。由于每台主机的基准功耗，两台以 30% 利用率运行的主机的效率低于一台以 60% 利用率运行的主机。同时，消除或尽可能减少空闲资源、处理和存储，以减少支持工作负载所需的总能源。
+  **预测并采用更高效的新硬件和软件产品/服务：** 支持您的合作伙伴和供应商进行上游改进，以帮助您减少云工作负载的影响。持续监控和评估更高效的新硬件和软件产品。设计灵活性以允许快速采用高效的新技术。 
+  **使用托管服务：** 在庞大的客户群中共享服务有助于更充分地利用资源，从而减少支持云工作负载所需的基础设施数量。例如，客户可以通过将工作负载迁移到 AWS 云 并采用托管服务（例如用于无服务器容器的 AWS Fargate，AWS 在其中大规模运行并负责其高效运行）来分散电力和网络等常见数据中心组件的影响。使用有助于将影响降至最低的托管服务，例如使用 Amazon S3 生命周期配置将不经常访问的数据自动移动到冷存储，或使用 Amazon EC2 Auto Scaling 来调整容量以满足需求。
+  **减少云工作负载的下游影响：** 减少使用您的服务所需的能源或资源量。减少或消除客户为了使用您的服务而升级其设备的需求。使用设备场进行测试以了解预期影响，并对客户进行测试以了解使用您服务的实际影响。 

# 定义
<a name="sus-def"></a>

 在云中实现可持续性包括六个方面的最佳实践： 
+ 区域选择
+ 用户行为模式
+ 软件和架构模式
+ 数据模式
+ 硬件模式
+ 开发和部署流程

 云中的可持续性是一项持续的工作，主要关注工作负载的所有组件的节能和效率，通过从预置的资源中获得最大收益，并最大限度地减少所需的总资源来达成此目标。这项工作范围很广，包括一开始就选择高效的编程语言、采用现代算法、使用高效的数据存储技术、部署到适当规模的高效计算基础设施，以及最大限度地减少对高功耗最终用户硬件的需求。 

# 最佳实践
<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)
+ [资源](sus-resources.md)

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

根据您的业务需求和可持续发展目标，选择您将在其中实施工作负载的区域。

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


| SUS 1：如何选择区域来支持您的可持续发展目标？ | 
| --- | 
| 选择亚马逊可再生能源项目附近的区域和其电网公布的碳强度低于其他位置（或区域）的区域。 | 

# 用户行为模式
<a name="sus-user-behavior-patterns"></a>

用户使用您的工作负载和其他资源的方式可以帮助您确定改进措施，以实现可持续性目标。扩展基础设施以持续匹配用户负载，并确保仅部署支持用户所需的最少资源。使服务水平与客户需求保持一致。定位资源以限制用户使用它们所需的网络。移除现有的未使用资产。识别已创建但未使用的资产并停止生成它们。为您的团队成员提供满足其需求的设备，同时最大限度地减少对可持续性的影响。

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


| SUS 2：您如何利用用户行为模式来支持您的可持续发展目标？ | 
| --- | 
|  用户使用您的工作负载和其他资源的方式可以帮助您确定改进措施，以实现可持续性目标。扩展基础设施以持续匹配用户负载，并确保仅部署支持用户所需的最少资源。使服务水平与客户需求保持一致。定位资源以限制用户使用它们所需的网络。移除现有的未使用资产。识别已创建但未使用的资产并停止生成它们。为您的团队成员提供满足其需求的设备，同时最大限度地减少对可持续性的影响。  | 

扩缩基础设施以匹配用户负载：确定利用率低或利用率为零的时段，缩减资源以消除过剩容量并提高效率。

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

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

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

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

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

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

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


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

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

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

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

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

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

# 数据模式
<a name="sus-data-patterns"></a>

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

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


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

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

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

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

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

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

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

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

# 硬件模式
<a name="sus-hardware-patterns"></a>

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

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


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

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

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

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

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

# 开发和部署模式
<a name="sus-development-deployment-patterns"></a>

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

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


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

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

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

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

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

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

 请参阅以下资源，详细了解可持续性的最佳实践。

## 白皮书
<a name="sus-wp"></a>
+  [可持续性支柱](https://docs.aws.amazon.com/wellarchitected/latest/sustainability-pillar/sustainability-pillar.html?ref=wellarchitected-wp) 

## 视频
<a name="sus-video"></a>
+  [The Climate Pledge](https://www.youtube.com/watch?v=oz9iO0EOpI0&ref=wellarchitected-wp) 