AI如何改变DevOps?
DevOps旨在加速软件开发流程,在不影响代码质量的前提下,更快为客户提供价值。过去十年以来,传统DevOps已经度过了很长一段发展周期。如今,企业组织开始遵循DevOps原理建立CI/CD管道。但在大多数情况下,团队仍在依靠手动流程与人为驱动建立自动化流程组合。很明显,这样的优化程度并没有达到理想或者理论意义上的极限。
最近,DevOps的理论高地迎来了AI与ML两股技术力量。相关工具开始融合,并在传统DevOps工具栈中并发出巨大的能量。从决策流程改进到操作与代码质量增强自动化,DevOps在AI(人工智能)与ML(机器学习)的双料加持之下迎来了更光明的发展前景。下面,我们具体探讨其中的几大亮点:
第一,自动代码审查。在软件开发的早期阶段,从编码本身开始,AI与ML工具已经能够基于表达管理引导性数据集(即根据需要的机器行为与响应,为机器学习算法提供输入数据)执行自动代码审查与代码分析。这一切,将极大减轻人类在代码质量管理中的工作量。
此外,借助代码管理与协作工具,用户可以自动在团队成员之间分发审核工作量。这一流程能够由此类算法更早发现代码缺陷、安全性问题以及代码质量问题。这些工具还可减少代码审查中的噪声。除了检测缺陷之外,自动代码审查还负责强制执行编码与安全标准。
第二,自动代码分析工具。由AI与ML支持的智能工具,例如代码分析与改进工具,能够从包含数百万行代码的报告中学习,据此掌握代码表达的意图并记录开发人员所做出的更改。以此为基础,这些智能工具即可通过分析为每一行代码提出建议。
其他方案则可通过不同的角度分析代码。在分析来自开源项目的数百万条代码之后,机器学习工具能够提供有效的性能调优结论,包括找出运行成本最高的代码行,并避免这些代码损害应用程序的响应时间。这些工具能够发现代码中的问题,例如资源泄漏、潜在的并发争用以及被白白浪费掉的CPU周期。更重要的是,这些工具可以在代码审查阶段及应用程序性能监控阶段与CI/CD管道顺畅集成。
在对新功能进行编码之后,开发人员便可以研究如何开发由AI及ML驱动的自动化单元测试。在开发冲刺阶段,这种智能单元测试工具能够帮助开发者节约20%左右的时间。
第三,自我修复测试。在完成构建及集成工作之后,下一阶段就是实施功能与非功能测试。在此阶段,使用AI与ML创建代码并执行自我修复测试/维护,已经在DevOps领域成为现实。
当然,测试自动化本身也可能成为巨大的瓶颈,也成为不少项目频频延期的原因。不够可靠的、不稳定的自动化流程拖慢了测试过程,而这种不稳定性往往源自受测应用程序乃至测试流程中各类元素的快速变化。智能技术的出现有助于识别这些变化并立即调整测试方法,借此实现测试流程的稳定性与可靠性。
第四,低代码/无代码工具。对于移动及Web应用而言,以往我们需要投入巨量资源培养相关人才,来获取稳定可靠的代码测试技能。在这方面,AI与ML测试工具能够全面学习应用程序流程、屏幕内容与元素,最终以低代码甚至无代码方式自动生成测试。这些工具还可以在每轮测试中自我完善以增强测试质量。
低代码或无代码工具允许团队成员参与到自动化测试的开发中来。在完成之后,开发者将节约下大量时间,可以将精力投入到其他更为紧迫的工作当中——例如开发其他创新型功能。
第五,机器人流程自动化。RPA(机器人流程自动化)将使用AI与ML实现自动化测试推向了新的层面。此类技术能够在大型组织当中将大量以往需要手动执行、耗时、易出错且难以自动化的流程转为自动操作。
第六,测试影响分析工具。测试执行完成之后,即可由AI与ML测试影响分析(TIA)工具接手,指导决策者判断需要在后续版本中继续进行哪些测试,而哪些测试在后续流程中可以剔除。另外,在同一测试类别之下,AI与ML算法可以根据引导性测试数据确定引发故障的根本原因,借此显著缩短平均解决时间(MTTR)。
第七,AIOps。在DevOps流程的后期,即将代码部署到生产环境之前与之后,AI与ML成为引领AIOps发展的新兴技术。完整的AIOps解决方案不仅涵盖智能APM(应用程序性能监控),同时也引入ITIM(IT基础设施监控)与ITSM(IT服务监控)机制。二者共同构成了生产与运营洞见分析的综合层级,能够在大数据之上运行并针对先进的现代软件架构(微服务、云架构等)起效。
借助基于AI的运营功能,团队可以专注于确定应用程序的服务运行状况,同时全面跟进生产数据的控制与可见性。
借助基于AI的运营功能,团队可以专注于确定应用程序的服务运行状况,同时全面跟进生产数据的控制与可见性。以此为基础,DevOps能够使用实时自动事件管理进一步缩短MTTR。其中AI与ML将负责为生产级应用程序提供日志可观察性、趋势汇总以及相应预测结果。
在AIOps组合中使用这些工具,团队可以减少并预防服务宕机(预测性警报),加快故障解决处理速度,快速分析大型日志文件,并从中找出引发问题的根本原因与所属类别,如安全性、网络、服务器等等。
总结
DevOps与人类工程的探索永远不会消失,但在探索之旅中,我们完全可以运用当前成果优化并加速以往难以自动化或维护、且易于出错的环节。
AI与ML正是应对这些挑战的绝佳解决方案,决策者也可以通过分析各项问题从此类工具中获取巨大价值。当然,只有将这些解决方案与原有流程及工具无缝集成,才能真正获得这种预期价值。如果AI与ML无法被轻松整合至标准DevOps工具栈内,则项目将沦为空谈,并最终衰退回传统的软件开发实践。