你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

有关优化环境成本的建议

适用于此 Azure 精心构建的框架成本优化清单建议:

CO:08 优化环境成本。 调整支出,确定预生产、生产、运营和灾难恢复环境的优先级。 对于每个环境,请考虑所需的可用性、许可、工作时间和安全性。 非生产环境应模拟生产环境。 在非生产环境中实施战略权衡。

本指南介绍成本优化工作负荷环境的建议。 每个环境都应针对特定用途进行定制,并针对成本效益进行优化。 必须做出战略权衡,并在资源最重要的地方分配资源,而不会影响关键组件。 通过以不同的方式处理环境并相应地优化环境,可以在成本优化与满足所需目标之间取得平衡。

定义

术语 定义
恢复点目标 (RPO) 事件期间数据丢失的最大可接受持续时间。
恢复时间目标 (RTO) 发生某个事件后,可接受应用程序不可用的最长时间。
服务级别协议 (SLA) 服务提供商和服务客户之间的合同协议。 协议定义了服务级别目标(SLO)。 未能满足协议可能会给服务提供商带来财务后果。

关键设计策略

优化环境成本的目标是找到每个环境的价值、成本和风险的正确平衡,包括生产、预生产环境和灾难恢复(DR)环境。 为每个环境自定义其特定用途,以节省资金并有效地使用资源。 确定每个环境的优势,例如效率或客户满意度。 你希望评估环境的投资回报(ROI),即使它没有直接利润。 在高风险环境中花更多的钱来减少问题,并在低风险环境中节省资金。 旨在平衡每个环境中的价值、成本和风险。

评估环境值

评估每个环境的价值意味着了解它对业务更广泛的影响,衡量用户满意度,并确定它如何与总体组织目标保持一致。 此评估有助于你就资源分配做出明智的决策,并使成本与环境优先事项保持一致。 价值的本质超出了环境产生的收入。 评估环境的价值时,需要以与工作负荷目标共鸣的方式确定支出优先级。 若要评估每个环境的值,请考虑以下因素:

  • 考虑用户:考虑谁使用每个环境以及他们需要哪些环境。 例如,客户使用生产环境,环境必须可靠且满足特定的 SLA,以实现性能和运行时间。

    另一方面,开发环境主要面向工作负荷团队,如开发人员和测试人员。 此环境不必满足面向客户的 SLA,但它应该具有必要的工具和资源,使团队能够有效工作。

    了解每个环境中用户的独特需求时,可以更好地分配资源并避免产生额外费用。 这种避免有助于确保每个环境正常运行且经济高效。

  • 符合组织价值度量值:使削减成本的努力与组织的优先级(如利润或员工满意度)保持一致。 对于每个环境,请了解如何定义成功,以便你可以将操作保留在目标上。 例如,如果组织专注于利润最大化或员工满意度,请将支出决策与这些指标保持一致。

确定环境成本

确定环境成本是了解每个工作负荷环境中的基础结构、服务、许可证和运营费用的成本。 成本管理工具是深入了解环境支出模式和趋势的关键。 若要确定环境成本,请考虑以下策略:

  • 确定成本驱动因素:确定驱动每个环境中成本的关键因素。 这些因素可能包括资源利用率、存储使用情况、数据保留、数据传输和特定服务。

  • 评估风险:评估与支出决策相关的风险,以及其对环境和业务运营的潜在影响。 考虑数据安全性、合规性、性能、审核和 SLA 要求等因素。

  • 监视和调整支出:持续监视和分析支出模式、价值交付和风险因素。 根据环境和业务的需求,定期查看和调整支出优化策略。

优化生产环境

在生产环境中优化成本涉及实施策略,以减少不必要的费用并提高运营效率。 专注于区分生产部署并满足用户的需求。 下面是优化生产环境的建议:

  • 区分区域:在为更少的客户提供服务的区域上花费更少。 例如,应在为 90% 的用户提供服务的区域中投入更多资金,而不是为 10% 的用户提供服务的区域。 调整部署策略以满足每个区域和用户段的要求。

  • 区分缩放:实施水平和垂直缩放策略。 在不过度预配的情况下高效地缩放资源以满足需求。

  • 区分基础结构:选择经济高效的硬件和基础结构解决方案,以满足所需的性能和可伸缩性。 考虑性能、成本、可靠性和可伸缩性等因素。

  • 优化租户模型:基于租户模型自定义环境。 例如,在付费租户的服务和功能上花费更多,为非付费租户花费更少。

优化 DR 环境

DR 环境是指工作负荷在中断事件后用于恢复的基础结构和进程。 破坏性事件包括自然灾害、网络攻击和硬件故障。 平衡维护 DR 环境的成本以及中断事件的潜在影响。 可考虑采取以下策略:

  • 评估系统和数据的关键性:评估系统和数据的重要性,以确定每个组件所需的保护和资源级别。

  • 确定 RTO 和 RPO:为了帮助确定 DR 环境的设计,请为每个系统或应用程序定义可接受的停机时间和数据丢失限制。

  • 优化冷 DR 环境:冷 DR 环境几乎没有基础结构或正在运行的服务。 可以使用基础结构即代码(IaC)在中断事件期间快速部署基础结构。 备份和存储策略需要满足环境的 RPO 和 RTO。 确保数据备份的数量和频率不比所需更可靠。

    权衡:冷 DR 环境是一种经济高效的选择,但恢复时间可能很长。

  • 优化热 DR 环境:所有基础结构和服务都在热 DR 环境中运行。 数据实时镜像主站点。 如果发生灾难,它将提供近乎即时的故障转移和最少的数据丢失。 考虑主动-主动部署以优化成本。

  • 优化暖 DR 环境:暖 DR 方法是冷 DR 环境和热 DR 环境之间的中间地带。 暖环境部分处于活动状态,并且定期与主站点同步。 它提供成本和恢复时间之间的平衡。 但是,这是成本最低的优化方法。 请考虑使用冷或热方法来优化成本。

优化预生产环境

优化预生产环境涉及从战略上管理开发、测试和暂存领域的资源,以密切模拟生产,同时降低不必要的成本。 预生产环境不需要生产环境的完整规模和可用性。 最大的机会在于根据特定的测试和开发需求定制这些环境,而无需准确复制生产。 成本降低领域包括使用低成本资源、关闭不需要的服务,以及应用预生产使用提供的折扣。 请考虑以下策略来优化预生产环境:

评估预生产环境

预生产环境分配不足或不当可能会导致资源过度预配或预配不足。 若要评估工作负荷的预生产环境,请考虑以下指南:

  • 了解环境类型:确定工作负荷所需的预生产环境类型,例如开发、测试和过渡环境。 每个环境都应具有定义的角色和特定功能,以确保高效的资源分配。

  • 符合用户的要求:在设置预生产环境之前,请了解用户的要求和期望。 根据功能或资源的需求定制特性和规范,以避免不必要的功能或资源费用。

  • 合并环境:确定是否可以合并环境而不损害其功能。 合并具有不重叠的功能的环境。 例如,可以将用户验收环境与质量保证环境合并。 这些函数是不同的,一个环境通常在使用另一个环境时处于空闲状态。

    风险:在组合环境以确保不会引发冲突或损害测试或开发过程时要谨慎。

下表提供了常见预生产环境的示例。

预生产环境示例 说明
开发环境 开发人员使用此环境编写和测试代码。 它提供沙盒空间,以便开发人员可以试验、生成和集成代码更改。
质量保证环境 此环境专用于质量保证活动。 它用于测试,以便在部署到生产环境之前识别和修复 bug 或问题。
安全环境 此环境用于安全测试。 它用于确保应用程序安全免受威胁和漏洞的影响。
用户验收测试环境 在此环境中,最终用户和利益干系人测试应用程序以验证其功能并确保它满足要求和期望。
过渡环境 此环境与生产环境非常相似。 这是在部署到生产环境之前进行最终测试和验证。

应用治理

应用治理是限制预生产环境中的部署选项,以控制费用并降低风险。 在预生产中,你可以灵活地定制配置和部署资源。 预生产环境越偏离生产环境,潜在风险就越大。 使用治理来约束预生产环境。 遵循以下指南:

  • 限制性能层:评估预生产环境的性能要求。 选择平衡成本和性能的性能层。 服务通常具有不同的性能层,其中一些层更适合进行测试。 某些服务具有提供类似生产功能的层,但不附带 SLA。 这些服务可降低成本,但仍提供测试和开发所需的功能。

  • 了解预生产 SKU:某些 SKU 专为开发环境而设计。 若要优化成本,请评估服务和层。 如果工作负荷不需要高性能,请选择低性能层。

  • 控制实例和 CPU 的数量:根据工作负荷需求确定预生产环境所需的最佳实例和 CPU 资源数。 避免过度预配资源以最大程度地降低成本。

  • 限制保留和日志记录:为预生产环境中的日志和数据定义保留策略。 根据合规性要求和成本注意事项考虑保留日志和数据所需的持续时间。 避免过度日志记录和保留,以减少存储成本。

  • 使用一致的 CPU 体系结构:在预生产和生产中使用相同的 CPU 体系结构。 例如,x86 应用程序不会在 Azure 资源管理器本机运行,反之亦然。 使用与生产环境相同的 CPU 体系结构来确保兼容性并最大程度地减少潜在问题。

  • 使用相同的操作系统:避免在预生产环境中将操作系统(例如从 Windows 更改为 Linux)或内核。 为 Windows 构建的软件通常不会在 Linux 上本机运行,而无需兼容层,反之亦然。 文件系统和目录结构不同,这可能会导致应用程序修补问题。 一致的环境有助于降低兼容性问题的风险,并确保部署顺利。

  • 约束缩放:为了优化成本,可以限制自动化来缓解失控的自动化。 例如,在开发环境中将最大缩放限制设置为 3,并在生产环境中将其设置为 10。 限制缩放以帮助控制资源使用情况和自动化成本。

  • 关闭不需要的资源:在未主动使用资源时关闭资源,例如在关闭时间和周末期间。 可以使用自动化工具或脚本来计划资源的关闭和启动。 某些供应商提供了可用于以编程方式停止和启动资源的 API。 请考虑使用 IaC 创建在不再需要临时环境时可以删除的环境。

  • 限制可用区域:考虑在 Azure 资源可能更便宜的不同区域中运行预生产环境的潜在优势。 将这些区域的预生产部署限制为优化这些环境的成本。

平衡与生产相似性

预生产环境通常不必要且成本高昂,可以准确反映生产环境。 目标是确保每个预生产环境与生产环境适当不同,以避免不必要的成本。 但是,当预生产与生产不同时,将 bug 部署到生产环境中存在风险。 这些环境越不同,风险就越大。 定制预生产环境以满足你的需求有助于你在优化成本的同时管理风险。 若要平衡与生产的相似性,请考虑以下建议:

  • 避免确切的副本:避免使预生产环境成为生产的具体副本。 它可能会不必要的增加成本。 创建经济高效的预生产环境,但使你可以在部署之前发现和解决潜在风险。

  • 避免极端偏差:避免过度偏离生产,例如使用不同的服务。 不同的服务可能无法准确模拟实际风险。 确定风险阈值,不要仅通过阈值来节省资金。

  • 缩短运行时:考虑在预生产阶段缩短进程的运行时以节省资金。 请谨慎对待可能出现的新漏洞,例如未检测到的内存泄漏。

  • 查看许可证:查看安全工具的许可计划。 如果生产设置和预生产设置之间的节点数显著不同,则重新评估需要微调成本,而不会损害安全性。

优化开发环境

开发环境旨在用于开发、测试和调试目的。 它们具有较短的生命周期,并且通常根据需要创建,并短暂存在。 与其他预生产环境和生产环境相比,开发环境对可靠性、容量和安全性的要求通常较低。 它们可能具有更少的功能,并且可以接受较低的资源利用率。 优化开发环境:

  • 评估工具:定期评估当前工具设置的成本效益,包括集成开发环境(IDE)、许可证和相关工具。 考虑提供类似功能且不影响质量的免费或开源替代方法。 随着开发环境的发展,不断重新评估这些工具的必要性和效率。

  • 考虑硬件:评估当前硬件设置的成本和性能。 投资更好、更高效的硬件可以提高工作效率并降低长期成本。 请考虑升级现有系统以延长其寿命并提高性能,而不是频繁更换硬件。

  • 优化环境数量:分析个性化开发环境与共享环境的优点和缺点。 各个环境可以模拟生产设置,防止开发人员之间的干扰,并提供自定义的设置。 但是,随着开发人员数量的增加,缩放变得更加昂贵。 共享环境可以节省成本,但如果问题同时影响整个开发团队,则可能会出现可靠性问题。 根据成本、风险缓解、效率和开发人员满意度找到适当的平衡。

  • 定期清理:定期清理和优化开发环境,以避免孤立资源、未使用的数据和概念证明试验的积累。 实现清理过程或自动化工具,以识别和删除未使用的资源。 仅保留基本组件和活动组件。 定期清理有助于降低存储成本,并确保资源利用率高效。

  • 实现采样缩放:不要将所有组件缩放到其最大容量,而是考虑一种有选择地缩放重要组件的采样方法。 这种方法可以经济高效,同时最大程度地降低风险。 评估不缩放某些元素的风险与利益比率,并考虑对环境的潜在影响。

  • 优化数据管理:开发环境对数据保留和备份频率的需求可能较低。

考虑终结点仿真

可以使用终结点仿真或模拟终结点来优化预生产环境中的成本,尤其是对于昂贵的资源(例如 GPU)。 确定预生产环境中的组件或服务,这些组件或服务最昂贵或资源密集型。 使用模拟终结点来模拟这些成本高昂的组件的响应,而无需调用它们。 若要模拟 API 响应,可以使用 WireMock、Postman 的模拟服务器或自定义实现等工具。

仿真和模拟终结点有助于节省成本,但必须确保它们表示生产环境足以进行测试。 在准确性和成本之间取得平衡,以帮助避免将来的生产问题。 例如,如果 GPU 是主要成本因素,请考虑在预生产阶段不需要实际 GPU 处理能力的任务的 GPU 仿真。 仿真可能无法完全表示实际 GPU 的性能或怪癖,因此,当确切的 GPU 行为对预生产测试不重要时,请使用它。

Azure 便利化

确定和优化环境成本:Microsoft成本管理是一套工具,可帮助组织监视、分配和优化其Microsoft云工作负荷的成本。 任何拥有计费或资源管理范围访问权限的人都可以使用成本管理,

Azure 顾问 是一种提供成本优化建议的工具,包括确定需要优化的虚拟机使用情况领域。 使用顾问来帮助做出明智的决策,并优化 Azure 环境中的成本。 Azure 提供有助于确定支出优先级的成本管理工具和功能。 可以使用这些工具跟踪和分析环境的成本、设置预算并接收成本优化建议。

应用治理:使用 Azure Policy,可以通过定义策略规则来限制资源类型、SKU 和实例,这些规则对可在 Azure 环境中部署的资源类型实施限制。 可以保持对预配资源的控制,并确保符合组织的策略和最佳做法。

若要使用 Azure Policy 限制资源类型,可以定义指定允许的资源类型的策略规则。 将这些规则应用到相关的 Azure 订阅或资源组。 Azure Policy 可防止用户部署不允许的资源。

使用 Azure 资源管理器以声明方式定义和管理资源。 可以根据每个环境的特定要求优化分配给每个环境的资源。 使用模板和参数化资源配置来优化成本。

优化预生产环境: Azure 提供开发/测试定价选项,为非生产环境提供折扣费率。 可以将更多资源和预算分配给关键生产环境,从而优化非生产环境中的成本。 还可以使用 Azure 许可产品/服务,Azure 混合权益。

可以使用 Azure API 管理进行 API 模拟。 API 管理充当后端服务的外观,这样 API 提供程序就可以抽象化 API 实现并改进后端体系结构,而不会影响 API 使用者。

成本优化清单

请参阅完整的建议集。