优化资源使用情况

Last reviewed 2024-09-25 UTC

Google Cloud 架构框架的“成本优化”支柱中包含的这一原则提供了一些建议,可帮助您规划和预配资源,以满足云工作负载的要求和使用模式。

原则概览

为了优化云资源的成本,您需要全面了解工作负载的资源要求和负载模式。了解这一点是定义良好的费用模型的基础,可让您预测总拥有成本 (TCO) 并确定整个云采用历程中的费用驱动因素。通过主动分析和预测云支出,您可以就资源预配、利用率和费用优化做出明智的选择。通过这种方法,您可以控制云支出,避免过度预配,并确保云资源能够满足工作负载和环境的动态需求。

建议

如需有效优化云资源用量,请考虑以下建议。

选择特定于环境的资源

每个部署环境对可用性、可靠性和可伸缩性的要求都不同。例如,开发者可能更喜欢能够让他们快速部署和运行应用的环境,但可能不需要高可用性。另一方面,生产环境通常需要高可用性。为了最大限度地提高资源利用率,请根据您的业务需求定义环境专属要求。下表列出了特定于环境的要求示例。

环境 使用要求
生产
  • 高可用性
  • 可预测的性能
  • 运维稳定性
  • 通过强大资源确保安全
开发和测试
  • 成本效益
  • 具有弹性容量的灵活基础架构
  • 在不需要数据持久性时使用临时基础架构
其他环境(例如预演环境和质量检查环境)
  • 根据环境特有的要求进行量身定制的资源分配

选择特定于工作负载的资源

您的每个云工作负载可能对可用性、可伸缩性、安全性和性能都有不同的要求。为了优化成本,您需要根据每个工作负载的具体要求选择资源。例如,无状态应用可能不需要与有状态后端相同的服务可用性或可靠性级别。下表列出了更多与工作负载相关的要求示例。

工作负载类型 工作负载要求 资源选项
任务关键型 持续可用、强大的安全性和高性能 高级资源和Spanner 等托管服务,可实现高可用性和数据的全球一致性。
非重大 经济高效且可自动扩缩的基础架构 具有基本功能的资源和临时资源,例如 Spot 虚拟机
事件驱动 根据当前容量和性能需求进行动态扩缩 Cloud RunCloud Run 函数等无服务器服务。
实验性工作负载 低成本且柔性环境,可用于快速开发、迭代、测试和创新 具有基本功能的资源、Spot 虚拟机等临时资源,以及具有指定支出限额的沙盒环境。

云计算的一个优势是,可以利用最适合给定工作负载的计算能力。有些工作负载是为了利用处理器指令集而开发的,而其他工作负载可能并非如此设计。相应地对工作负载进行基准测试和性能分析。对工作负载进行分类,并选择特定于工作负载的资源(例如,为 Compute Engine 虚拟机选择适当的机器系列)。此做法有助于优化成本、实现创新,并保持工作负载所需的可用性和性能水平。

以下示例说明了如何实现此建议:

  • 对于面向全球分布式用户的任务关键型工作负载,请考虑使用 Spanner。Spanner 可确保所有区域的数据可靠性和一致性,从而无需进行复杂的数据库部署。
  • 对于负载水平波动的工作负载,请使用自动扩缩功能,以确保在负载较低时不会产生费用,同时保持足够的容量来满足当前负载。您可以为许多 Google Cloud 服务配置自动扩缩功能,包括 Compute Engine 虚拟机Google Kubernetes Engine (GKE) 集群Cloud Run。设置自动扩缩时,您可以配置最大扩缩限制,以确保费用保持在指定的预算范围内。

根据费用要求选择区域

对于云工作负载,请仔细评估可用的 Google Cloud 区域,并选择符合您成本目标的区域。费用最低的区域可能无法提供最佳延迟时间,或者可能无法满足您的可持续性要求。明智地决定在哪里部署工作负载,以实现所需的平衡。您可以使用 Google Cloud 区域选择器了解成本、可持续性、延迟时间和其他因素之间的权衡。

使用内置的费用优化选项

Google Cloud 产品提供内置功能,可帮助您优化资源使用情况并控制费用。下表列出了您可以在某些 Google Cloud 产品中使用的费用优化功能示例:

产品 费用优化功能
Compute Engine
GKE
  • 使用集群自动扩缩器,根据当前负载自动调整 GKE 集群的大小。
  • 使用 节点自动预配,根据工作负载要求自动创建和管理节点池,并确保实现最佳资源利用率。
Cloud Storage
  • 使用 对象生命周期管理,根据数据的存在时间或访问模式,自动将数据转换为费用较低的存储类别。
  • 使用 Autoclass,根据使用情况,动态将数据移动到最具成本效益的存储类别。
BigQuery
  • 使用基于容量的价格,降低稳定状态工作负载的查询处理费用。
  • 使用分区和聚类技术优化查询性能和费用。
Google Cloud VMware Engine
  • 通过使用成本优化策略(例如 CUD、优化存储用量和适当调整 ESXi 集群的大小)来降低 VMware 费用。

优化资源共享

为了最大限度地提高云资源的利用率,您可以在同一基础架构上部署多个应用或服务,同时仍满足应用的安全和其他要求。例如,在开发和测试环境中,您可以使用相同的云基础架构来测试应用的所有组件。对于生产环境,您可以在一组单独的资源上部署每个组件,以便在发生事件时限制影响范围。

以下示例说明了如何实现此建议:

  • 将单个 Cloud SQL 实例用于多个非生产环境。
  • 使用 GKE Enterprise 中的舰队团队管理功能,并设置适当的访问权限控制,让多个开发团队共享一个 GKE 集群。
  • 使用 GKE Autopilot 利用 GKE 默认实现的费用优化技术,例如 bin packing 和自动扩缩。
  • 对于 AI 和机器学习工作负载,请使用GPU 共享策略(例如多实例 GPU、分时 GPU 和 NVIDIA MPS)来节省 GPU 费用。

开发和维护参考架构

创建和维护一个参考架构存储库,该存储库专门针对不同的部署环境和工作负载类型而定制。为了简化各个项目的设计和实施流程,可以由某个团队(例如云技术卓越中心 [CCoE])集中管理蓝图。项目团队可以根据明确定义的条件选择合适的蓝图,以确保架构一致性和采用最佳实践。对于项目独有的相关要求,项目团队和中央架构团队应协作设计新的参考架构。您可以跨组织共享参考架构,以促进知识共享并扩展可用解决方案的存储库。这种方法可确保一致性、加快开发速度、简化决策过程,并提高资源利用效率。

查看 Google 针对各种用例和技术提供的参考架构。这些参考架构包含资源选择、调整大小、配置和部署方面的最佳实践。通过使用这些参考架构,您可以加快开发流程,并从一开始就实现成本节约。

使用组织政策来强制执行费用管理

不妨考虑使用组织政策来限制团队成员可以使用的 Google Cloud 位置和产品。这些政策有助于确保团队遵循经济高效的解决方案,并在与成本优化目标一致的位置预配资源。

估算实际预算并设置财务限额

为每个项目、工作负载和部署环境制定详细预算。 确保预算涵盖云运营的各个方面,包括基础架构费用、软件许可、人员和预期增长。为防止超支并确保与您的财务目标保持一致,请为项目、服务或特定资源设定明确的支出限额或阈值。定期监控云支出是否超出这些限额。您可以使用主动配额提醒来及早发现潜在的超支情况并采取及时的纠正措施。

除了设置预算之外,您还可以使用配额和限制来帮助强制执行成本控制并防止支出意外激增。您可以通过在不同级别(包括项目、服务甚至特定资源类型)设置配额,对资源消耗进行精细控制。

以下示例说明了如何实现此建议:

  • 项目级配额:在项目级设置支出限额或资源配额,以建立整体财务限制并控制项目中所有服务的资源消耗。
  • 服务专属配额:为特定 Google Cloud 服务(例如 Compute Engine 或 BigQuery)配置配额,以限制可预配的实例数、CPU 数或存储容量。
  • 资源类型专属配额:对 Compute Engine 虚拟机、Cloud Storage 存储桶、Cloud Run 实例或 GKE 节点等单个资源类型应用配额,以限制其用量并防止意外超支。
  • 配额提醒:当配额用量(在项目级别)达到最大值的某个百分比时,收到通知。

通过将配额和限额与预算和监控相结合,您可以创建一种主动且多层次的费用控制方法。此方法有助于确保您的云支出保持在指定的范围内,并与您的业务目标保持一致。请注意,这些费用控制措施并非永久性或严格的措施。为确保费用控制措施始终符合当前行业标准并反映不断变化的业务需求,您必须定期查看费用控制措施并进行调整,以纳入新技术和最佳实践。