DevOps 是一种重视 “软件开发人员(Dev)” 和 “运维技术人员(Ops)” 之间沟通合作的文化、运动或惯例,是软件开发领域最近十年来兴起且当下普遍成熟运用的方法论。它和传统的瀑布模型、螺旋模型等理念不同,其核心是 “敏捷”,结果是自动化。DevOps 是敏捷开发的延伸,通过 “软件交付” 和 “架构变更” 的流程自动化,使构建、测试、发布软件能够更快捷、频繁并且可靠。
传统的软件开发组织结构中开发、运维和质量保障部门之间相互独立、各司其职。随着需求膨胀和响应迭代频率的加剧,行业对敏捷开发的要求更高,不仅要做到交付快捷频繁,而且得保证质量可靠,这就对软件研发工具提出了更高的要求。
一个明显的趋势是,软件研发工具正在从单个工具逐渐转向为一站式 Devops 平台。
一站式 Devops 平台至少要满足如下三个最基本的条件:
•功能矩阵完整,能覆盖研发过程的主要部分
•完善的研发数据链路和功能整合能力
•系统间的高度自动化能力
有了这三方面最基本的保证,一站式 Devops 平台才能发挥最大价值。
以代码评审为例,工程师发起代码评审时,系统界面自动将评审的研发数据链路信息(代码 Diff 对比、评论、push、commit、关联的需求、关联的测试、流水线构建、代码扫描等)关联并显示到评审功能界面上。评审发起人和评审者可以基于这些信息进行高效的数字化研发协同。
具体来说,在这个过程中:
①工程师进行研发工作的各流程时,可快速完成功能切换,无需跨多系统操作,使用高效,节约时间。
②将代码评审的研发数据链路进行功能级集成,不管是评审发起者还是评审人,都不再需要到各离散系统中去寻找相关信息,在评审界面各种信息应有尽有,甚至可以直接在当前界面进行操作,这才是数字化研发协同能够得以真正实现的关键核心,从而让大幅度提升效能变为现实。
③当代码评审创建时,代码扫描、自动化构建等各种相关系统立即被自动触发与执行,不需要复杂配置,实现全过程高度自动化。不仅如此,这种高度的自动化直接带来了强大的质量内建和左移能力。
此外,一站式 Devops 平台还具备如可视化能力、可追溯能力、可度量能力等,直接让研发团队数字化协同水平上一个大台阶。
对技术背景雄厚的企业来说,自研 DevOps 平台工具也是一种选择,但这一平台的开发需要很大的投入。以微软的 Azure DevOps 为例,从微软 2005 年正式对外发布产品化 Team Foundation Server(Azure DevOps 前身)开始,经历了 17 年的不断开发与优化,才有了目前国际市场上被广泛认可的 Azure DevOps。在此期间 Azure DevOps 为了适应不断变化的软件研发管理实际要求,也经历了数次大的技术调整与重构。由此可见想一蹴而就地研发一款优秀的 DevOps 产品基本是不可能的。
虽然目前市场上有很多 DevOps 产品,但是或多或少会有一些开源工具的影子,有些干脆就是基于开源工具套了一个壳子。这种方式可以让产品快速投入使用,但是同时也会有很多的问题。比如:
技术封装不到位:这类产品的最大特点就是只是对开源产品进行类简单地封装,但由于封装得不到位,导致了在运行自开发产品的同时,需要维护底层的开源产品。也有一些产品,在基于开源产品进行优化时反而降低了开源产品具备的优秀能力,提高了使用难度,这就有点儿得不偿失了。
流程管理模式僵化:DevOps 平台需要具备的研发流程管理,配置管理,自动化流水线,制品管理,环境管理等重要模块功能中,除了研发流程管理,其他的主要功能每个产品的差异不是很大。最能体现产品特色的就是研发流程管理。但是很多产品在设计这部分时,都只支持敏捷、看板或者带有自管理方式的流程。研发流程上每个企业都或多或少地存在差异,尤其是在一些中大型的软件研发部门或企业中,固化的流程管理方式很难适配所有团队。
扩展性差、定制化强:很多 DevOps 产品是都支持企业级用户的,但往往在适配企业用户时需要对现有产品进行定制才能将企业管理流程落地。定制化方式往往仅限于基于现有产品的定制化开发。其实基于产品的定制化开发应该是最后才考虑的,否则会导致后期维护成本高,同时会给版本升级,产品功能迭代带来诸多质量问题。
管理维度能力较强,工程维度专业度不足:正确的做法应该是平台工具从管理维度上覆盖软件研发的所有过程,从工程维度上有的 DevOps 平台产品可以覆盖软件研发的主要过程,但是很多产品在设计的时候并没有考虑到从工程维度的版本交付维度进行管理,这导致了在当前软件研发过程中很多 DevOps 平台产品都是项目 / 系统 / 团队范围内的研发管理,但是由于很多企业的不同产品间是存在耦合的,很多时候需要不同系统协同开发与发布,而很多 DevOps 平台产品对跨系统支持得并不好。
可度量设计缺失、数据分散:有些 DevOps 平台的研发数据分别存储在不同功能模块中,各个模块数据没有联系,这种情况尤其体现在基于开源产品的封装式产品上;有些则无法简单地定制化度量报表。
一站式 DevOps 工具如此之多,应该怎么选呢?正所谓 “试玉要烧三日满,辨材须待七年期”,所以历经六七年时间打磨的 SoFlu 软件机器人才能在众多 DevOps 开发工具中脱颖而出。它是一款覆盖软件全生命周期的自动化开发工具,包含后端全自动开发平台、前端全自动开发平台、全自动测试平台、全自动运维平台。
SoFlu 软件机器人有三大特性:
可视化:SoFlu 软件机器人拥有可视化开发界面,用户利用简单的流程图就能分析业务逻辑,拖拽组件就能完成软件开发。不论是专业的开发人员,还是没有编程基础的普通人,都可以创建复杂程度不同的软件,自动化开发流程可以满足加速数字化转型的业务需求。平台简单易上手,极大地降低了开发门槛和人力资源投入。
自动化:自动化是提高软件开发效率的保证。不论是开发、测试、运维,都能实现自动化。以后端开发为例,连接数据库后,平台自动生成库中所有表的基本接口和 SQL 语句,开发效率提升 300%,时间成本降低 10 倍。此外,项目测试时,平台能自动识别所有变动的接口,自动查找接口关联的所有测试用例进行精准回归测试。
全栈一体化:一站式 Devops 平台不是简单的菜单堆积,不是系统的简单集成,也不是过 webhook 或者插件,能实现几个系统之间简单的信息传递和自动化触发,而是像 SoFlu 软件机器人一样,全栈一体化,将软件开发、测试、运维全部联通,并且自动化执行,无需考虑与第三方平台的集成成本。比如,由于测试平台关联了前后端开发平台,一旦开发环节有所变化,测试平台可以生成自动化的测试脚本,实现精准回归测试。SoFlu 软件机器人的全自动运维平台提供 170 个接口,方便用户精准定位问题,极大提升运维效率。
而且,SoFlu 软件机器人已经有了成功的案例。它曾帮助国有企业中石油开发一个大型电商平台,在 5 个 SoFlu 软件机器人的协助下,中石油仅仅投入 9 人团队 45 天就完成了平台的重构及上线。而此前,中石油曾聘请外部厂商,组建了一个近二十人的开发团队,花了约一年的时间才勉强将该电商平台完成,且上线后,出现了系统运行不稳定、信息安全存在隐患等诸多问题。可以说,电商平台能顺利上线, SoFlu 软件机器人在其中起到了关键性的作用,不仅明显降低了项目开发难度,提升开发效率,还极大地为企业节省了人力成本和资金投入,真正实现了 “一人一项目,十人抵百人”。