随着时间的推移进行监视和优化
在工作负荷随着生态系统的发展而发展时不断调整投资规模。 |
---|
昨天重要的事情今天可能不重要。 通过生产工作负荷评估进行学习时,预计体系结构、业务需求、流程甚至团队结构都会发生变化。 软件开发生命周期 (SDLC) 实践可能需要改进。 外部因素(例如云平台及其资源以及你的协议)也可能会发生变化。
应仔细评估所有变化对成本的影响。 定期监视变化和 ROI 趋势,并评估是否需要调整功能性和非功能性需求。
示例方案
Contoso Air 为航空公司提供行李跟踪解决方案。 工作负荷托管在 Azure 中,在 AKS 上运行,其数据库为 Cosmos DB,使用事件中心进行消息传送。 工作负荷部署在“美国西部”和“美国东部”区域。
持续评估和优化环境和支持成本。
通过使用成本跟踪系统,持续评估和优化资源、数据和付费支持的成本。 是否存在可以停用、替换、重新生成或重构的未充分利用的资源?
可以通过避免为未充分利用的资源付费来降低成本。 了解定价指标可以帮助你做出更符合成本模型的决策。 它还可以防止无根据的计费。 重设大小或删除未充分利用的资源,甚至更改 SKU,都可以降低成本。
还可以通过评估与技术供应商的支持合同的使用情况并调整其规模来节省一些成本。
Contoso 的挑战
- 工作负荷团队的成本始终低于预算,因此成本效率的优化并不是优先考虑的事项。
- 他们计划明年提高工作负荷的可靠性,并且知道这样做会增加他们的 Azure 成本,可能会使工作负荷超出预算。 他们正在考虑要求增加明年的预算。
应用方法和结果
- 团队决定在要求更多资金之前评估当前的 Azure 和支持成本,以寻找潜在的节省资金机会。 他们调查现有成本跟踪系统中按资源、按资源组和按标签的成本细分,注意到一些意外支出。
- 团队发现,他们的环境中运行着 VM,这些 VM 用于已弃用的生成系统,但已不再是必需的;Azure 存储中有大量旧数据可以移动到更便宜的层;他们在支付与云提供商的支持合同的费用,合同中包括他们未使用的咨询时间。
- 该团队通过删除未使用的 VM 并将旧数据移至存档存储来优化其 Azure 成本。 他们开始与云提供商更密切地合作,以充分利用其咨询服务。
- 团队在积压工作 (backlog) 中添加了一项定期任务,以评估未来的工作负荷成本。
持续查看和优化工作负荷
根据 ROI 数据不断调整体系结构设计决策、资源、代码和工作流。
定期审查指标、性能数据、账单报告和功能使用情况可能会导致微调,从而降低成本。
Contoso 的挑战
- 由于团队历来都将成本控制在预算之内,因此他们没有考虑现有功能的替代方法, 而是将他们的大部分规划集中在构建新功能上。
- 通过初步评估发现浪费后,他们决定查看当前组件的其余部分以寻找优化机会。
应用方法和结果
- 团队发现其分配的资源多于低优先级流所需的资源,可以在满足性能要求的同时安全地缩减分配的吞吐量。 具体而言,他们可以摆脱过度预配来处理峰值负载的情况,改为实施基于队列的负载均衡系统。
- 他们还发现其计算平台上选定的 SKU 中添加了一项新功能,取代了一些身份验证代码。 使用此功能将意味着需要维护和测试的代码更少。
优化部署环境
以不同的方式对待不同的 SDLC 环境,部署适当数量的环境。 生产环境应该是主要的成本驱动因素。
了解并非所有环境都需要模拟生产后,你就可以节省资金。 非生产性环境可以有不同的功能、SKU、实例计数甚至日志记录。
还可以通过按需创建预生产环境并在不再需要它们时将其删除来节省成本。
Contoso 的挑战
- 工作负荷团队在预生产环境上的花费比在生产环境上的花费更多。 虽然这对于某些方案来说可能很重要,但对于此工作负荷来说似乎太过分了。
- 预生产环境在构建后与生产环境非常匹配。 工作负荷团队希望在配置较低的环境中很逼真地模拟生产环境,因为这样他们就会高度确信生产环境中的行为会与配置较低环境中的行为相符。
应用方法和结果
- 经过仔细评估后,团队认为他们可以接受一些额外风险,换得在环境之间存在一定差异带来的成本节省。
- 团队决定将一些测试环境并置到同一基础结构中,并在一夜之间关闭未使用的环境。
- 团队还找到了在本地开发人员工作站上左移并执行内循环开发和测试的机会。
- 通过寻找在预生产环境和开发实践中做出小的妥协的方法,他们腾出了预算,将其充分用于自动化工作。