DevOps 主要与开发人员和运营之间的合作有关,以改善生产中应用程序的交付和可靠性。最常见的最佳实践旨在用更强大的自动化来取代在开发和运营团队之间管理的手动、易出错的程序。这包括用CI/CD(持续集成和持续交付)实现交付管道的自动化,用容器实现标准化配置,并将基础设施配置为代码。在运营方面,提高应用程序可靠性的 DevOps 最佳实践包括提高应用程序的可观察性,增加监控,以及自动化云和基础设施的操作。
但如何提高应用程序、数据库、数据管道和云基础设施的性能呢?本文将分享7个可以影响性能和用户体验DevOps 实践和方法。
1. 从一开始就在应用程序中构建安全实践
DevOps 团队最不需要的就是部署具有安全漏洞的新功能。安全中断或降级会影响用户体验并产生重大的业务问题。一个 DevOps 的最佳实践是,通过与信息安全部门在需求方面的合作,测试CI/CD管道内的代码漏洞,以及在软件开发中实施其他安全实践,来实现安全转移。
Akamai 的高级开发人员倡导者 Mike Elissen 说:“应用程序可靠性的一个关键组成部分是可用性,采取适当的措施来正确保护应用程序免受 Web 应用程序攻击、DDoS 攻击等可能意味着保持在线和离线之间的区别。”
Elissen 说,向左转移是从 DevOps 转变为 DevSecOps 的一部分。他继续说道,“我们看到在 DevOps 中添加安全性的‘左移’变得越来越明显,最终创造了更强大的 devsecops 文化,并使更多的开发人员意识到并对其应用程序的安全性负责。”
2. 标准化架构和基础设施蓝图
Quali 产品管理副总裁 Amir Rozenberg 指出了一个影响团队绩效的问题。他说:“许多 DevOps 团队发现自己正在组织有机增长的应用程序基础架构定义的混乱,这些定义是在早期真诚地开发的,以提高团队在软件开发生命周期中的效率。”
Rozenberg 询问 DevOps 团队是否应该采用自己动手的方法来创建环境,或者组织是否应该创建标准。他说:“推荐的方法是建立一个中心团队,以蓝图的形式对环境进行建模,以使它们可靠、可重用和合规。然后,他们需要能够分发这些基础架构定义,以便业务成员可以通过快速自助服务使用它们,无论是集成到自动化管道中还是以手动方式。”
3. 在 CI/CD 管道中建立可观察性和持续测试
66degrees 的 DevOps 总监 Matt Sollie 认为 CI/CD 可以做的不仅仅是打包和推送代码。他说:“并不是所有的 DevOps 原则都像持续交付或将一切构建为代码一样迷人或可见,但它们同样重要。持续集成是成熟的 DevOps 态势的一个组成部分,它可以极大地提高应用程序的可靠性,但需要目标、愿景和时间才能以有意义的方式构建。”
Sollie 承认,实现可靠性和性能目标不仅需要有远见,还需要对实践和优化架构进行投资。“可观察性是一项关键且昂贵的原则,因为可靠性不是开启或关闭状态,需要细致入微的数据收集。借助所有云计算服务,为工作选择正确的工具或服务可以带来固有的可靠性和性能优势。”
敏捷开发团队应该在他们的管道中实施什么来提高性能?以下是一些建议:
- 在增加部署频率之前实施持续测试
- 考虑使用服务虚拟化来测试微服务和第三方 API
- 确保可观察的 CI/CD 管道以改进故障检测并隔离管道问题
4. 使用功能标志和金丝雀版本控制部署
部署不必是所有用户一次性获得所有更改的绝对转换。代码中的功能标志有助于配置和控制功能的可用性,而金丝雀发布策略使 DevOps 团队能够缓慢而有条不紊地推出新功能。
LaunchDarkly 的首席技术官兼联合创始人 John Kodumal 补充说:“功能管理,特别是功能标志,正在迅速成为改进应用程序的整体可靠性和性能的首选开发实践,同时允许开发人员不断创新。通过使用功能标志,开发人员可以在生产前测试功能更新,以便在发布前解决问题。”
这些控件提高了可靠性和性能,同时也帮助开发团队最大限度地减少了中断。Kodumal 说:“功能标志提高了性能,同时为开发团队提供了必要的控制来更新应用程序而不会中断或停机。”
5. 建立严格的可观察性和监测标准
现在专注于 DevOps 职责的运维方面,团队应该考虑几个最佳实践来提高应用程序性能,包括开发可观察性标准和改进监控。
Mindee 开发人员关系总监 Frédéric Harper 说:“ DevOps 必须实施严格的监控和可观察性流程,以确保应用程序的每个部分都正常工作并且服务器进程运行顺畅。通过保护这一元素, DevOps 团队可以收集有价值的信息,以了解用户如何使用应用程序,可能防止未来出现问题,更容易支持客户,并根据真实数据改进业务或架构决策。”
6. 使用 AIOps 和自动化扩展监控
在 web 2.0 时代,当出现中断或性能问题时,运维人员只有少数日志文件和监控工具来查看。如今,运行微服务、无服务器应用程序和多云数据库意味着在解决事件和确定问题根本原因时需要参考更多的数据和工具。AIops 平台可以集中监控数据,使用机器学习关联警报,并帮助操作人员跨多个平台自动响应和恢复,这有助于最大限度地减少性能影响。
BigPanda 产品营销副总裁 Mohan Kompella 对此表示赞同:“AIOps 平台可以帮助 DevOps 团队保持工具的自主性和灵活性,同时还为集中式事件响应者提供他们所需的可见性,使其成为应对中断的第一道防线。”
7. 定义 SLO 和错误预算
DevOps 团队应该平衡哪些实践产生最大收益并解决风险。这需要团队就 DevOps 优先级进行衡量、学习和协作,这在实施实践和工具后的数月或数年内可能无法实现收益时并不容易。
一种确定优先级的方法是采用站点可靠性工程实践、定义服务水平目标 (SLO) 和使用错误预算。当应用程序或微服务超出其错误预算时,它会向 DevOps 团队发出信号,以找出原因并专注于解决方案。
Nobl9 的首席运营官 Kit Merker 说:“服务水平目标为工程团队设定了明确的目标,以便更好地决定如何确定工作的优先级。开发人员和 ITop 不仅可以以技术为中心,还可以转向以服务为中心。”
DevOps 团队有很多事情要做, DevOps 最佳实践帮助团队在加速开发和提高可靠性和性能之间取得平衡。成功的关键可能在于定义问题陈述、辩论方法、迭代解决方案和衡量影响。
原文标题:7 devops practices to improve application performance