减少您的 Google Cloud 碳足迹

Last reviewed 2021-10-11 UTC

本文档介绍支持环境可持续发展的 Google Cloud 方法。其中包括可让您了解 Google Cloud 碳排放量的信息和其他资源,以及可用于减少该碳排放量或将其降至最低的方法。本文档的目标受众群体包括:

  • 希望构建碳足迹最小的应用的开发者。
  • 希望了解当前的碳排放量并发现能够减少该排放量的机会的基础架构团队和其他技术团队。

本文档假定您熟悉 Google Cloud 并了解如何运行虚拟机 (VM) 工作负载。

了解云碳排放量

Google 自 2007 年起便已实现碳中和,并承诺到 2030 年实现全天候 100% 使用无碳能源进行运营。Google 的数据中心(包括运行 Google Cloud 服务的数据中心)的能源用量同样远低于典型数据中心。因此,使用 Google Cloud 可帮助您立即降低 IT 碳排放量。

Google 运营多个云区域,这些区域通过全球数据中心网络提供。这些数据中心会消耗本地电网产生的电力来运行云服务。本地电网产生的电力对环境的影响按照电网碳排放强度来衡量。电网碳排放强度表示为电网发电的发电厂的碳排放量。

由于能源混合和生产效率不同等因素,因此所有数据中心位置的环境影响并不相同。自 2017 年起,Google 还使用购电协议 (PPA) 购买可再生能源,数量相当于它同一年在全球消耗的电量。这些 PPA 会导致生产无碳能源(归因于 Google),而无碳能源会进入那些我们的数据中心从中消耗电力的电网。

Google 数据中心消耗的电力对环境的影响取决于电网碳排放强度和归因于 Google 的无碳能源来源产生的能源的组合。Google 引入了无碳能源百分比 (CFE%) 指标,该指标通过上述这两个元素计算得出。CFE% 描述每个区域平均每小时无碳能源的消耗量,其表示您的应用使用无碳能源运行的平均时间百分比。由于能源供应更清洁,对于同一工作负载而言,CFE% 较高的区域产生的碳排放量比 CFE% 较低的区域要少。

为减少碳排放量,您需要减少云工作负载对碳排放来源生产的电力消耗。为减少碳排放量,我们建议您采取以下主要策略:

  1. 选择平均每小时 CFE% 较高和电网碳排放强度较低的云区域。对于 CFE% 相同的区域,请使用电网碳排放强度来进一步比较这些区域的碳排放性能。
  2. 优化云工作负载以减少碳排放量。例如,使用弹性云服务和自动扩缩功能来最大限度地减少未使用的计算资源,并在电网碳强度较低的时段运行批处理工作负载,从而提高效率。
  3. 设置组织政策以将云资源的位置限制为能源更清洁的区域。

了解您的碳足迹

Google Cloud 提供碳足迹,该工具可帮助您了解使用 Google Cloud 产生的碳排放量。“碳足迹”根据本地电网的电网碳排放强度提供总排放量。该报告将排放量进一步归因于您拥有的 Google Cloud 项目以及您使用的云服务。排放量数据根据 Google 的碳足迹报告方法进行报告,并且可以帮助 Google Cloud 客户满足您的 Greenhouse Gas (GHG) Protocol Scope 3 Standard 报告要求。您可以将碳足迹数据导出到 BigQuery 以供进一步分析。

您可以借助“碳足迹”信息中心和 BigQuery 导出功能来了解您的位置使用 Google Cloud 服务的碳排放量。您可以使用这些数据来比较不同 Google Cloud 服务的碳排足迹。例如,如需了解它们的相对排放量,您可以比较在同一云区域中运行的两个或多个服务的总排放量。

碳足迹报告提供的 Google Cloud 客户温室气体总排放量尚未经过第三方验证或确认。

选择最合适的云区域

选择能源更清洁的云区域来运行工作负载是一种减少碳排放量的最简单且最高效方法。Google 发布所有云区域的碳排放数据,包括本地电网的 CFE% 和电网碳排放强度。为减少总排放量,我们建议您尽可能选择 CFE% 更高的区域。为帮助您选择能源更清洁的区域,Google Cloud 在 Google Cloud 控制台的一些位置选择器和 Google Cloud 文档的“位置”页面上添加了一个二氧化碳排放量低指示图标。如需了解区域必须满足哪些条件才能收到此指示图标,请参阅 Google Cloud 区域的无碳能源

如果多个区域的 CFE% 都差不多,则比较其电网碳排放强度。如果您专注于减少基于位置的碳排放量,则比较不同区域的电网碳排放度也非常重要。例如,如果 CFE% 得分差不多,则电网可以由燃煤发电厂或燃气发电厂供电。电网碳排放强度反映了这种组合,并且可帮助您选择碳排放量最低的电网。

降低碳排放量可能是您在选择区域时需要平衡的众多要求之一。例如,您可能需要考虑特定 Google Cloud 服务的可用性、价格、数据位置要求以及向用户传送数据时的延迟时间。总体 CFE% 最高的区域可能不适合您的使用场景。为确保将碳排放量降至最低,请选择 CFE% 最高且满足您的所有要求的区域。

为了简化区域选择,可使用 Google Cloud 区域选择器根据碳足迹、价格和延迟时间来确定满足您要求的最佳云区域。如需详细了解 Google Cloud 区域选择器,请参阅选择适合您的 Google Cloud 区域

如果您的组织让用户选择使用哪个云区域,您也可以考虑设置组织政策以将位置限制为二氧化碳排放量低的区域。

选择最合适的云服务

Google Cloud 提供一系列适用于不同 IT 工作负载的云服务。为帮助减少现有的碳足迹,请考虑将虚拟机工作负载从不够节能的基础架构(例如本地数据中心)迁移到 Compute Engine。如需了解如何将虚拟机从本地数据中心和各种云环境迁移到 Google Cloud,请参阅使用 Migrate to Virtual Machines 进行迁移的过程

许多工作负载都不需要虚拟机,您可以改为将它们部署到适用于不同工作负载类型的其他全代管式服务。这些服务通常具有内置的自动扩缩和合理调整容量功能,可帮助您优化性能和资源用量。例如,与在虚拟机上运行类似应用堆栈相比,Cloud Run 是一个完全无服务器环境,它扩缩容器化应用的速度更快且拥有的空闲资源较少。拥有较少空闲资源可以优化费用并减少碳排放量。

请考虑以下几种适用于常见工作负载类型的产品。服务列表并不详尽,但介绍了不同的代管式服务如何优化云资源用量(通常是自动优化),同时降低云费用和碳足迹。

  • Cloud Run:一种运行容器化应用的无服务器产品,采用您选择的语言进行编写。它可以快速自动扩缩您的应用(从零扩充到 N 个容器实例),具体取决于流量。如果没有流量,则您的应用不会使用任何计算资源进行传送。该服务旨在处理突发流量模式,并相应地优化计算资源的使用。
  • Cloud Functions:无服务器函数即服务 (FaaS) 产品。它与 Cloud Run 和 App Engine 运行相同的基础架构,它将相同的从零扩缩和快速自动扩缩功能扩展到 Cloud Functions。
  • Google Kubernetes Engine (GKE):提供代管式 Kubernetes 环境的云服务。与直接使用虚拟机相比,在 GKE 上使用 Kubernetes 环境运行容器化工作负载可以最大限度地减少未使用的云资源,从而降低云费用并减少工作负载的碳足迹。
  • BigQuery:支持查询大型 PB 级数据集的无服务器云数据仓库。通过为大型多租户基础架构中的许多用户提供支持,BigQuery 可借助大规模的经济效益高效地利用计算资源。BigQuery 架构将存储与计算进行分隔,从而独立于查询执行高效地分配计算资源来扩缩数据存储空间。BigQuery 根据需要动态分配计算资源(称为槽)。公平调度机制会根据需要在各项目和运行中的执行之间自动重新分配槽容量。

您可能还有其他仍需要虚拟机的工作负载。如果需要虚拟机,请避免过度预配以免超出您的需求,并避免运行未使用的资源,这可能会导致产生费用并增加碳排放量。

最大限度地减少空闲云资源

您可能会观察到,减少空闲(使用效率低下)的云资源的费用优化做法也有助于减少碳足迹。空闲资源会产生不必要的费用和碳排放,因此会造成浪费。请考虑以下形式的未使用资源:

  1. 未使用的活跃云资源,例如工作负载完成后未终止的虚拟机实例。
  2. 过度预配的资源,例如,使用超出工作负载需求的更多虚拟机或更大的虚拟机机器类型。
  3. 非最佳架构或工作流,例如已迁移到云(但尚未针对云进行优化)的直接原样迁移应用,或者用于数据处理和分析工作负载的尚未分开的存储和计算基础架构。

未使用和过度预配的虚拟机资源通常对不必要的费用和增加的碳足迹影响最大。为最大限度地减少碳足迹,请考虑如何通过工作负载自动化、监控和优化过程来最大限度地减少空闲虚拟机容量和其他未使用的云资源。这些主题不在本文档的讨论范围内。但是,有一些简单的做法可能会对您的费用和碳足迹造成巨大影响。Active Assist 是一个解决方案,支持其中一些做法,它提供以下类型的自动化建议来优化您的云环境:

  1. 识别并删除空闲虚拟机资源:定期在 Google Cloud 控制台中检查是否存在空闲资源建议,例如未使用的磁盘。您还可以使用 gcloud CLI 或通过 API 查看空闲资源推荐。确定不再需要空闲资源后,您可以将其删除以节省费用和排放量。
  2. 合理调整虚拟机实例的容量:通过定期在 Google Cloud 控制台中检查是否存在合理调整容量建议,根据虚拟机资源用量合理调整虚拟机容量。合理调整容量功能有助于解决因过度预配导致的浪费。您也可以使用 gcloud CLI 或 API 查看合理调整容量建议。
  3. 识别并删除空闲虚拟机:使用空闲虚拟机 Recommender 来帮助识别尚未使用的虚拟机实例。确定不再需要空闲虚拟机后,您可以将其删除。
  4. 收回或移除无人参与的项目:使用无人参与的项目 Recommender 来帮助发现很少使用或没有使用的无人参与项目,并尽可能关停这些项目。
  5. 安排虚拟机在需要时运行:如果仅在特定时间需要虚拟机,请考虑安排虚拟机实例自动启动和停止
  6. 修复空闲和过度预配的 Cloud SQL 实例:使用 Active Assist 来识别过度预配空闲的 Cloud SQL for MySQL、PostgresSQL 和 SQL Server 实例。确定后,您可以调整这些实例的大小或删除这些实例。

非最佳架构导致云资源的使用效率较低。虽然为云构建的应用可能会发生架构问题,但这些问题通常发生在本地工作负载上。例如,迁移到 Google Cloud 的单体式应用,没有进行优化或进行最低程度的优化(通常称为“直接原样迁移”)。以下做法可帮助您优化架构:

  1. 在需要时创建资源:虽然云资源具有弹性,但如果将工作负载部署到持续运行的固定资源(无论实际使用情况如何),您只能获得有限的效率优势。寻找根据需要创建(和删除)资源的机会,例如使用虚拟机调度机制或云服务中的弹性功能。使用弹性功能包括使用 Compute Engine 自动扩缩运行无状态 Web 服务器的虚拟机,或使用 Dataflow 自动扩缩流式数据流水线的工作器。
  2. 容器化工作负载:考虑将工作负载打包到容器中,并使用 Google Kubernetes Engine (GKE) 等容器编排器高效地运行容器。使用 GKE 时,您可以根据虚拟机的资源要求跨虚拟机集群高效地调度容器。如果满足多个容器的资源要求,则这些容器还可以共享单个虚拟机的资源。

Migrate for GKE and GKE Enterprise 提供了从虚拟机到容器的工作负载迁移的简化路径。将虚拟机迁移到容器是迈向应用现代化改造的第一步。后续步骤涉及费用优化做法,这些做法还会减少排放量,以及将应用重构为微服务。

如果您需要完整的配置灵活性并控制容器编排,请考虑使用 GKE。如果您需要运行容器化 Web 应用或微服务,并且不需要完整的 Kubernetes 环境,请考虑使用 Cloud Run。Cloud Run 消除了容器运行的复杂性,改为专注于为开发者提供更出色的体验。如需详细了解比较,请参阅 Google Kubernetes Engine 与 Cloud Run 对比

  1. 将单体式应用重构为微服务:单体式应用将其所有模块组合成单个程序,因此难以分配资源来运行特定模块。因此,与基于微服务的实现相比,单体式应用可能难以高效运行和扩缩,并且可能拥有更大的碳足迹。

    假设有一个具有购物车服务和付款服务的单体式电子商务网站。用户可能会在一个会话中多次与购物车服务互动,而仅在会话结束时与付款服务互动。这两项服务由于流量和负载特性不同而具有不同的资源要求,但它们不能单独运行,因为它们都属于同一个单体式应用。如果单体式应用在虚拟机上运行,即使只有一项服务需要增加服务容量,但额外的每个虚拟机会添加计算资源来运行这两项服务。

    与单体式应用相比,微服务将应用模块分离成它们自己的使用网络调用集成的轻量级程序。微服务可以彼此独立地扩缩,并且它们使用适合运行该服务的不同资源形状(例如虚拟机机器类型、Cloud Run vCPU 和内存分配或 App Engine 实例类型)。微服务扩缩可以通过精细扩缩和减少过度预配来更有效地使用云资源,从而降低费用和排放量。如需了解详情,请参阅将单体式应用重构为微服务

  2. 使用将存储和计算资源相分离的云服务:一些本地(基于云)数据处理和分析工作负载,例如 Apache HadoopApache Spark 通常针对数据存储和计算共享相同的基础架构。如果您要维护大量基础架构以存储数据,同时又需要调整相同的占用空间以满足峰值计算要求,则计算资源利用率通常较低。利用率低会导致存在更多空闲资源,从而增加费用并产生更多排放量。

    将这些工作负载迁移到 Google Cloud 时,我们建议您使用将存储和计算基础架构分隔开来的代管式服务,例如:

    • BigQuery:BigQuery 是一种无服务器、PB 级的数据仓库即服务。您可以将 BigQuery 用于基于 SQL 的分析工作负载。BigQuery 中的数据集存储与计算资源相分离。这种分离意味着 BigQuery 存储空间可以扩缩,以有效利用资源的方式提供几乎无限的存储空间。这也意味着,无需复制数据或启动新集群即可就地共享数据集。
    • Dataproc:Dataproc 是一种适用于 Hadoop 和 Spark 工作负载的代管式服务。许多本地 Hadoop 和 Spark 部署使用始终处于开启状态的计算集群(与使用特征无关)。虽然您可以使用 Dataproc 创建长期有效的集群,但我们建议您在需要运行作业时创建临时集群。Dataproc 作业读取或写入的数据会单独保存在专用存储服务(例如 Cloud Storage 和 Bigtable)中。无需维护 Hadoop 存储环境(即使没有作业运行),即可降低运营复杂性、费用和排放量。
    • Spanner:Spanner 是一种可在全球范围内扩缩的分布式 SQL 数据库服务,它可将计算与存储分离,从而可以单独扩缩这些资源。您还可以使用自动扩缩器工具自动扩缩 Spanner 实例的计算资源节点数。自动扩缩 Spanner 部署让您的基础架构能够根据负载要求自动调整和扩缩,并有助于在负载较低时降低费用和碳排放量。
  3. 将工作负载迁移到代管式服务:代管式产品可以通过自动扩缩工作负载来最大限度地减少未使用的资源,并且提供其他可以降低基础架构要求的功能。如需了解详情,请参阅本文档前面的选择最合适的云服务

减少批处理工作负载的排放量

与许多在线服务工作负载不同,批处理工作负载的运行位置和运行时间通常很灵活。批处理工作负载的示例包括用于科学计算的高性能计算 (HPC) 作业、运行每日记账对账,或为营销电子邮件生成产品推荐。

与其他工作负载类似,我们建议您在 CFE% 较高的区域运行批处理工作负载以降低总体碳排放量。如果批处理作业的运行时间具有灵活性,则您可以在电网碳排放强度较低的时段运行作业,从而进一步减少碳排放量。如需查看 Google Cloud 区域所在的全球不同位置中的每小时电网混合碳排放强度数据,请使用 eityityMap 网站(由 Tomorrow 维护)。

根据定义,批处理工作负载应该对延迟不敏感,但可能存在与相关系统(例如数据源和接收器)的依赖项,造成不必要的网络开销。属于较大应用或工作流的作业(例如,从一个或多个来源系统读取数据,然后将转换后的数据写入数据仓库的提取、转换和加载 (ETL) 作业)可能存在此依赖项。如果 ETL 作业在云区域之间处理和传输大量数据,由于网络性能影响和跨区域出站流量费用增加,单独运行作业可能不太现实或费用较高。

我们建议您在二氧化碳排放量低的区域中运行以下类型的批处理工作负载:

  1. 独立的批处理工作负载:假设有这样一个独立的 HPC 工作负载,您在其中根据需求选择价格最优惠且具有最佳排放特征的区域,使用该区域中的存储和计算服务,并直接下载分析结果。在这种情况下,除了检索分析结果之外,不存在可能导致网络性能下降或产生网络出站流量费用的跨区域流量。
  2. 需要向其他云区域传输最少数据的批处理工作负载:假设有一个从机器学习 (ML) 模型为您提供产品推荐的 API。该 API 可能托管在多个云区域中,用来以低延迟方式向用户传送数据。机器学习模型会定期根据浏览器中的点击流数据以集中批处理形式进行训练,然后复制到托管 API 的每个云区域。在这种情况下,训练作业的输出模型工件很小,大小可能为是数十 MB。

    在这种情况下,用于训练机器学习模型的点击流数据会直接从浏览器发送到托管机器学习后端的云区域。当机器学习后端训练一组新模型时,将模型复制到其他云区域的数据转移相对较小(如果需要复制 10 个模型,则可能低到几百 MB)。

建议

下表总结了减少 Google Cloud 碳足迹的建议:

主题 建议
了解云碳排放量

了解无碳能源百分比 (CFE%) 如何描述云区域的无碳能源消耗。

了解用于减少碳排放量的主要策略。

了解您的碳足迹 使用碳足迹工具来帮助了解使用 Google Cloud 产生的碳排放量。
选择最合适的云区域

使用 Google Cloud 区域选择器根据碳足迹、价格和延迟时间(作为相对注意事项)来确定最佳云区域。

请考虑创建组织政策来限制在二氧化碳排放量低的区域使用。

选择最合适的云服务

迁移虚拟机,从效率低下的本地数据中心迁移到 Compute Engine。

使用针对特定工作负载进行了优化的云代管式服务,而不是自行管理的虚拟机。

最大限度地减少未使用的云资源

使用 Active Assist 功能删除未使用的虚拟机、优化虚拟机形状并关停无人参与的项目。

寻找按需创建(和删除)云资源的机会,而不是永久保留这些资源。

调度虚拟机以根据需要启动和停止虚拟机。

将工作负载迁移到容器,并使用 Cloud Run 和 GKE 等代管式服务高效地运行工作负载。

将单体式应用重构为微服务以提供效率优势。

使用将用于数据处理和分析的计算和存储相分离的服务。

将现有虚拟机工作负载迁移到代管式服务。

减少批处理工作负载的排放量

在二氧化碳排放量低的区域中运行具有最少或无跨区域出站流量的批处理工作负载。

尽量在一天中电网碳排放强度较低的时间段运行批处理工作负载。

后续步骤