提高应用程序性能的7项devops实践

提高应用程序性能的7项devops实践

Devops是艰难的,但在快速开发和提高可靠性之间的选择不应该是这样。考虑到左移的安全性、更好的可观察性、AIops平台等等。

Devops主要与开发人员和运营部门之间的合作有关,以改善生产中应用程序的交付和可靠性。最常见的最佳实践旨在用更强大的自动化来取代在开发和运营团队之间管理的手动、易出错的程序。这包括用CI/CD(持续集成和持续交付)实现交付管道的自动化,用容器实现标准化配置,并将基础设施配置为代码。在运营方面,提高应用程序可靠性的devops最佳实践包括提高应用程序的可观察性,增加监控,以及自动化云和基础设施的操作。

但如何提高应用程序、数据库、数据管道和云基础设施的性能呢?在这篇文章中,我咨询了专家,并确定了七个机会,其中devops实践和方法可以影响性能和用户体验。

1.从第一天起就将安全实践纳入应用程序

开发团队最不需要的就是部署带有安全漏洞的新功能。安全中断或退化会影响用户体验,并造成重大的业务问题。一个devops的最佳实践是,通过与信息安全部门合作提出要求,在CI/CD管道内测试代码漏洞,以及在软件开发中实施其他安全实践,来实现安全转移

Akamai的高级开发人员倡导者Mike Elissen说:"应用程序可靠性的一个重要组成部分是可用性,采取适当的措施,适当保护应用程序免受网络应用程序攻击、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承认,比起拥有愿景,实现可靠性和性能目标更需要投资于实践和优化架构。"可观察性是一个关键而昂贵的原则,因为可靠性不是一个开启或关闭的状态,需要细微的数据收集。在所有的云计算服务中,为工作选择合适的工具或服务可以带来固有的可靠性和性能优势"。

敏捷开发团队应该在他们的管道中实施什么来提高性能?这里有一些建议:

4.用功能标志和金丝雀版本控制部署

部署不一定是所有用户都能一次性获得所有变化的绝对转换。代码中的功能标志有助于配置和控制功能的可用性,而金丝雀发布策略使开发团队能够缓慢而有条理地推出新功能。

LaunchDarkly的首席技术官和联合创始人John Kodumal补充说:"功能管理,特别是功能标志,正在迅速成为首选的开发实践,它可以提高应用程序的整体可靠性和性能,同时允许开发人员不断创新。通过采用功能标志,开发人员可以在生产前测试功能更新,以便在发布前排除问题。"

这些控制措施提高了可靠性和性能,但也帮助开发团队尽量减少干扰。Kodumal说:"功能标志提高了性能,同时给予开发团队必要的控制,以便在不中断或停机的情况下更新应用程序。"

5.建立严格的可观察性和监控标准

现在专注于devops责任的运营方面,团队应该考虑几个最佳实践来提高应用程序的性能,包括制定可观察性标准和改善监测

Mindee公司的开发者关系总监Frédéric Harper说:"devops必须实施严格的监控和可观察性流程,以确保应用程序的每一个部分都在正常工作,服务器进程运行平稳。通过保障这一要素,devops团队可以收集有价值的信息,以了解用户如何利用应用程序,可能防止未来的问题,更容易支持客户,并根据真实数据改进业务或架构决策。"

6.用AIops和自动化扩展监控

在web2.0时代,运营部门只有少量的日志文件和监控工具,在出现故障或性能问题时进行审查。今天,运行微服务、无服务器应用程序和多云数据库意味着在解决事件和确定问题根源时需要咨询更多的数据和工具。集中监控数据的AIops平台,使用机器学习来关联警报,并帮助运营部门在多个平台上自动进行响应和恢复,可以帮助最大限度地减少性能影响。

BigPanda产品营销副总裁Mohan Kompella也认为:"AIops平台可以帮助开发团队保持工具的自主性和灵活性,同时也为集中式事件响应者提供他们所需的可见性,以成为故障的第一道防线。"

7.定义SLO和错误预算

Devops团队应该平衡哪些做法能产生最大的效益并解决风险。这就要求团队衡量、学习和协作,确定devops的优先级,这并不容易,因为在实施实践和工具后的几个月或几年内,收益可能无法实现。

一种确定优先级的方法是采用网站可靠性工程实践,定义服务级别目标(SLO),并使用错误预算。当一个应用程序或微服务超过其错误预算时,它预示着devops团队要找出原因并专注于解决方案。

Nobl9的首席运营官Kit Merker说:"服务级目标为工程团队设定了明确的目标,以便更好地决定如何确定其工作的优先次序。开发人员和ITops不能只以技术为中心,而是可以转为以服务为中心"。

Devops团队有很多事情要做,devops最佳实践帮助团队在加速开发和提高可靠性和性能之间平衡他们的注意力。成功的关键可能在于定义问题陈述,辩论方法,迭代解决方案,以及衡量影响。

猜你喜欢

转载自juejin.im/post/7126947565148323870