DevOps工程旨在加速软件开发流程,从而在不影响代码质量的情况下更快地为客户提供价值。
在过去的十年中,传统的DevOps已经有了长足的进步,现在允许许多组织实施持续集成(CI)/持续部署(CD)管道。但是,在大多数情况下,组织仍然依靠人工流程和人工驱动的自动化流程的组合,并没有进行优化。
人工智能和机器学习在DevOps的应用
在DevOps领域也见证了人工智能和机器学习技术的兴起。这些工具正在成为融合到传统DevOps工具堆栈中的有力候选者。从决策流程改进到自动化操作和代码质量增强,在人工智能和机器学习的帮助下,DevOps的未来发展充满希望。以下是七个值得关注的趋势和变化:
(1)代码审查实现自动化
在软件开发的早期阶段,从编码本身开始,人工智能和机器学习工具就已经能够基于思想数据集(机器学习和响应的机器学习算法的输入)执行自动代码审查和代码分析。这些有助于减少人类的参与。
此外,使用代码管理和协作工具,用户可以自动将审查的工作量分散到团队成员中。其最终的结果是能够更早地检测到代码缺陷、安全问题和与代码相关的缺陷,这些缺陷都是这些算法能够轻松发现的。这些工具还可以减少代码审查中的噪声。除了检测缺陷之外,自动代码审查还强制执行编码和安全标准。
(2)代码分析工具实现自动化
由人工智能和机器学习支持的智能工具(例如代码分析和改进)可以从数百万行代码的存储库中学习。然后,这些工具可以了解代码的意图,并记录开发人员所做的更改。在那里,这些智能工具可以为他们分析的每一行代码提供建议。
还有一些开发人员则采用不同的方法来分析代码。在分析了来自开源项目的数百万条代码之后,由机器学习工具提供支持的代码着重于性能,并帮助找到可能导致重大损失的代码行,这些代码会损害应用程序的响应时间。这些工具可以在代码中发现问题,例如资源泄漏、潜在的并发竞争条件以及浪费的CPU周期,并且它们还可以在代码审查阶段和应用程序性能监视阶段与持续集成(CI)/持续部署(CD)管道集成。
在同一类别下,对新功能进行编码后,开发人员开始研究由人工智能和机器学习驱动的自动化单元测试创建。这可以为开发人员节省大约20%的时间。
(3)自我修复测试
构建后验收和集成编码的下一个阶段是功能和非功能测试。在这里,使用人工智能和机器学习进行代码创建以及自我修复测试代码和维护在DevOps领域已成为现实。
测试自动化可能是一个巨大的瓶颈,并且通常是项目延迟的原因。不可靠的自动化会影响测试过程。而测试自动化不可靠的根本原因之一是测试中的应用程序和测试中使用的元素的不断更改。智能技术可以帮助识别这些变化并调整测试,使其更加稳定可靠。
(4)低代码/无代码工具
此外,创建健壮的测试代码的技能的成本很昂贵,而且并非总是可用,特别是对于移动应用和Web等数字应用程序而言。在这里,通过学习应用程序流程、屏幕和元素,人工智能和机器学习测试工具可以自动生成测试,而几乎不需要代码。这些工具可以在每次测试运行之间自我修复。
低代码或无代码工具允许更多的团队成员参与测试自动化创建活动。它们还为开发者腾出时间专注于更重要紧迫的活动,例如创建新功能。
(5)机器人流程自动化
机器人过程自动化(RPA)是使用人工智能和机器学习进行测试的自动化的另一层。这样的技术可以用于自动化大型组织中的大量采用人工、耗时、易出错,以及难以自动化的流程。
(6)测试影响分析工具
在测试执行完成后,人工智能和机器学习测试影响分析(TIA)工具将处于适当位置,可以指导决策者将哪些测试继续进行到下一个版本,哪些领域不涉及其他内容。在相同的测试类别下,人工智能和机器学习算法可以根据思想测试数据确定故障的根本原因,并节省大量的平均解决时间(MTTR)。
(7) AIOps
在DevOps流程的后期,在将代码部署到生产之前和之后,人工智能和机器学习引领了AIOps中的新兴技术。良好的AIOps解决方案不仅涵盖智能应用程序性能监视(APM),而且还利用了IT基础设施管理(ITIM)和IT服务管理(ITSM)。这些共同构成了生产和运营洞察力分析的综合层,可以在大数据上运行,并且可以针对先进的现代软件架构(微服务和云平台等)运行。
借助基于人工智能的操作功能,组织团队可以专注于确定其应用程序的服务运行状况,并获得对其生产数据的控制和可视性。这样,DevOps团队可以使用实时自动事件管理来加快其平均解决时间(MTTR)。在这里,人工智能和机器学习在生产中的应用程序内的日志可观察性、趋势和预测等方面可以做更多的工作。
使用AIOps产品组合中的此类工具,团队可以减少并经常防止服务停机(预测性警报)。他们还可以加快支持故障解决的速度,更快地分析大型日志文件,并找出根本原因和类别(安全性、网络、服务器等)。
结语
尽管DevOps和人类工程学永远不会消失,但它们肯定可以使用一些帮助来优化和加速那些难以自动化和维护的单调、易出错的活动。
人工智能和机器学习是应对这些挑战的绝佳解决方案,并且通过对每个组织的问题进行适当的分析,决策者可以从这些工具中获得巨大价值。而只有在将这些解决方案与现有流程和工具无缝集成的情况下,才能获得成功。如果人工智能和机器学习无法轻松地集成到标准DevOps工具堆栈中,则项目将无法实现价值,并最终恢复到传统的软件开发实践。