通过优化提高效率
在制定的性能目标内提高系统效率以增加工作负载价值。 |
---|
在初始阶段设置的目标基于合理的用户体验水平,会考虑到各种约束。 你应重新评估并调整目标,以进一步增强体验。 为了进一步增强体验,你需要清楚地了解系统的使用方式、系统的演变方式以及平台或技术随时间的变化。 监视、优化、测试、部署的周期是一个持续的过程。
效率优化工作使工作负载能够应对资源消耗降低的情况。 它们可能会导致工作负载处于具有空闲容量的过度预配状态。 使用该容量来提高系统的可靠性。 消除容量以改进系统成本。 或者重新调整容量用途,以支持现有资源上的新产品功能。
当系统提高效率时,抓住这个机会设置和维持新的性能目标。
示例场景
Contoso 的人力资源工程团队支持向组织的人力资源信息系统 (HRIS) 的自定义集成。 这些集成包括处理工资的财务集成、应对政府劳动法报告的招聘统计数据等。 大多数集成都是用 C# 编写的 Azure Functions,它们托管在组织数据中心的已启用 Azure Arc 的 Kubernetes 群集中。 大多数作业运行良好,但由于处理延迟,一些作业使团队焦虑,因为有时关键数据在 HR 主管需要它时不可用。
确定性能优化的优先级
为性能优化分配专用周期,以解决功能领域的非功能要求和优化。 此优化的目标包括资源、代码、数据保留、数据库查询等。
通过采用此方法,可以构建性能驱动的优化文化。 你让团队负责主动监视性能模式,并同时微调应用程序。
Contoso 的挑战
- 团队有些杂乱,他们的积压工作很多。 大多数情况下,在编写和部署集成时,他们采用“发后即忘”的思维模式:编写集成、部署集成,然后团队转到下一个任务。
- 由于高级领导层没有对数据的及时访问权,团队经常被要求解决关键性事件支持问题。
- 团队非常清楚需要做出改进,但尚未将进行必要的更改放在优先位置。
应用方法和成果
- 团队现在会为技术债务和其他优化活动分配每个冲刺的 20%。 这为工程团队争取到了时间,让他们可以优先处理并解决关键领域和影响意义最大的其他领域。
- 通过采用这种方法,团队能够指定必要的时间来解决导致数据处理延迟的性能问题。
寻找设计改进
使用新的设计模式和组件增强体系结构,这样可以通过以前由于时间或预算有限而没有考虑的方式来提高性能。
新的设计和组件可以优化系统,从而提供更好的用户体验和长期成本效益。 例如,可以使用缓存或添加内容分发网络组件。
Contoso 的挑战
- 该团队使用 Azure Functions 和基于触发器的流已经好几年了,并且尚未专门分配时间来评估此方法的替代。
应用方法和成果
- 该团队探讨了使用 Azure Functions 的其他方法,并发现 Durable Functions 支持扇出模型,可以帮助它们并行化特定的工资任务。
- 该团队将此模式整合到其设计目录中,供将来的设计使用。 值得提醒的是,除了代码优化和数据清理之外,还可以了解一下解决性能效率低下的其他方法。
分析遥测和趋势
使用监视工具分析历史趋势,并确定能从性能优化工作中获益最大的流和代码实现路径。 为实现此目的,我们建议使用应用程序性能监视 (APM) 工具和探查器。 此外,确定系统中的操作热路径和其他潜在瓶颈。
确定反复出现的问题领域时,团队可以专注于收益最高的领域。
Contoso 的挑战
- 团队使用 Azure Application Insights 检测了所有函数。
- 他们大多数时候使用 Application Insights 来解决故障问题和接收日志记录。
- 一直以来,他们针对改进领域的方法基于来自高级领导团队的反馈。
应用方法和成果
- 虽然反馈很重要,但团队意识到 Application Insights 在检测其监视的应用程序中的热点方面做得相当出色。
- 团队开始利用此功能,并结合了解哪些流比较重要,它成为了团队在技术改进和效率方面分配的 20% 工作中的宝贵工具。
- 使用 Application Insights 时,团队能够在领导团队成员遇到问题之前主动识别风险集成并对其进行处理。