1.1.2 智能运维与开发运维的区别
“DevOps(Development和Operations的组合词)”是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加快捷、频繁和可靠。”
——维基百科
DevOps这个词来源于2009年在比利时根特市举办的首届DevOpsDays大会,近几年它在业界受重视程度和应用率越来越高。
传统运维工作的重点是各种技术管理工作,如机房管理、服务器管理、网络管理和系统软件管理等。DevOps是由开发+运维组成,AIOps是由AI+运维组成,如图1-1所示。但具体分析可知这两种“+”并不是一回事,前者是通过自动化工具将开发人员、运维人员协同起来,打破两类人群的合作壁垒,实现在敏捷开发情况更能适应产品或系统的快速迭代上线,两类人依然在各自做着自身所负责的工作,并没有谁帮谁工作、谁减少谁的工作、谁替代谁的工作。而后者是AI算法工程师辅助,或者说帮助运维工程师提升工作效率,算法工程师和运维工程师属于不同部门,双方明显是一方帮助另一方。
DevOps与AIOps的不同主要体现在以下3点。
1)参与人员不同。
2)工作方式不同。
3)工作内容不同。
关于第3个不同点,两种运维在工作内容上存在明显的差异。但实际中存在软件开发+人工智能+技术运维3部分重叠的工作,这部分工作应该属于哪些人来做,就会产生职责不清的问题(见图1-1),下面进行重点分析。
图1-1 DevOps与AIOps的关系图
DevOps是基于一套开发管理工具将研发工程师和运维工程师组织在一起协同工作,两类人员是在这套开发管理工具上进行协同交流工作,并不是融合在一个实体部门里。他们依然做着原来各自的职责内容,研发工程师做系统开发类相关工作,运维工程师做运维相关工作,只是由于他们双方均在这套开发管理工具上开展工作,增加了沟通、提升了研发效率。具体来说,可实现项目统筹管理、资源协同多共享、效率多质量提升的目标,具体见表1-4。
表1-4 DevOps实现的目标
这类开发管理工具可以做到将运维人员的意愿100%地通过自动化实现。而在自动化运维的推进过程中,一些较为简单的运维工作,如单指标异常检测、指标漂移引起的数据波动等问题,可通过动态门限方法来诊断识别。这种动态门限的阈值可通过Z-score等方法通过自动化运维工具实现,这类工作有时通过研发人员开发的Java程序直接在产品中实现,有时通过运维人员在开发管理工具中实现,均不需通过算法工程师。那么这类的工作是属于DevOps还是属于AIOps?因为它既涉及一定算法又未通过算法工程师来实现,而是基于自动化运维工具实现的,因此属于AIOps。
随着DevOps在企业不断被成熟应用,这类软件开发+人工智能+技术运维混合的工作会越来越多。DevOps其实是AIOps的必经之路,随着企业的算法团队日益成熟,运维相关的智能算法会逐渐独立出来由专业的算法工程师来实现(在运维发展阶段的章节中会具体介绍)。前期由研发工程师或运维工程师借助开发管理工具代劳的算法工作,将逐渐独立化、专业化、体系化、平台化,即从DevOps过渡到AIOps。