背景介绍:早在2020年底的时候,科大讯飞自动化部署平台(iDeploy)针对交付场景已经实现了复杂业务一键式部署实施,包括业务组件部署、业务组件数据初始化、业务组件简单功能验证等,效率相比之前已经有了非常大的提升(330%)。对于现场实施人员,他们还需要进行操作系统的初始化、基础组件安装和初始化,整个过程还是非常繁琐、耗时,并且出错率很高,经常会因为某个参数忘记配置导致业务异常。这对于业务不是非常熟悉的现场实施人员很难排查定位,所以通常需要业务非常熟悉的高阶测试人员陪同实施,造成较高的人力成本消耗。为此,当时提出了把整个交付实施过程进行全流程自动化,实现从操作系统初始化、基础组件安装(包括mysql MHA等复杂架构)、基础组件初始化、业务组件部署、业务组件初始化到业务组件验证整个操作流程放在一个流程中,交付人员只需要按照现场的环境修改对应的IP等信息,即可自动化执行整个交付过程,实现一键交付。在过去的一年,我们实现了上述一键交付,同时在本地测试环境进行一键导出,导出交付所需要的全部安装包、配置、数据库文件和脚本等,到现场只需要一键导入、修改IP、点击部署等操作即可在数小时内完成整个部署实施过程。从之前的高阶测试陪同、经验丰富的运维实施数天,到最后只需要入职2周的实习生即可完成整个交付动作。业务落地和反馈都非常好,已经在讯飞交付场景广泛推广。
业界工具对比:
名称:开发语言 Puppet:Ruby SaltStack:Python Ansible:Python Python:Java
名称:客户端 Puppet:有 SaltStack:有(可无) Ansible:无 Python:无
名称:二次开发 Puppet:不支持 SaltStack:支持 Ansible:支持 Python:不支持
名称:协议 Puppet:HTTP SaltStack:SSH/ZMQ/RAET Ansible:SSH Python:SSH
名称:配置文件格式 Puppet:Ruby语法格式 SaltStack:YAML Ansible:YAML Python:YAML
名称:Web UI Puppet:提供 SaltStack:提供 Ansible:提供(商业版本) Python:提供
名称:编排 Puppet:不支持 SaltStack:YAML Ansible:YAML Python:界面拖动
名称:传输模式 Puppet:拉模式 SaltStack:拉模式(推模式) Ansible:推模式 Python:推模式
名称:实施难度 Puppet:高 SaltStack:高 Ansible:高 Python:低
名称:实施人员能力要求 Puppet:高,需要进行学习 SaltStack:高,需要进行学习 Ansible:高,需要进行学习 Python:极低,入职2周实习生都可
我们是如何实现的:
1. 建设自动化部署平台,其中包括自研的流程引擎,通过这个流程引擎实现单个应用多个操作步骤的串联,形成单个应用的部署流程,同样实现复杂架构的组件安装流程,再结合作业执行串联成一整个大的流程。
2. 业务经过标准化改造:
a) 业务先进行流程标准化改造,每一个步骤可以通过脚本实现。
b) 实施流程拆解,将大流程拆解为小流程,小流程拆解为原子化的操作步骤;
c) 包括部署包标准化(统一目录结构格式、统一包名格式、统一打包方式),配置统一管理(配置中心、统一配置规则、精简可变配置),统一部署方式(统一脚本模版、端口规则、安装路径规则);
3. 在测试环境按照交付说明拖拽形成部署全流程,搭建测试环境进行测试。
4. 测试无误后整体导出全流程全部资源包(包括安装包、脚本、数据和配置)。
5. 在现场导入全流程资源包,配置IP等信息,执行一键部署。
效果介绍:在集团中已经在两个有较多交付场景的事业部中使用。
A. 事业部技术比较先进,之前已经使用ansible等工具进行一些基础组件的部署和安装,而且标准化程度也比较高。已经从最开始的15日耗时节省到7日的耗时。对于A事业部的运维人员来说已经到了天花板,无法再进行优化了。在我们的帮助下,所有操作全部移到我们的平台中,基本可以实现2日内完成,效率提升250%。同时最主要的效果是不再需要高阶的运维全程操作以及高阶测试/开发人员陪同,入职2周的实习生经过简单的培训即可完成整个实施,大大降低人力成本。
B. 事业部之前交付需要耗费80人日,接入自动化部署平台之后平均15人日。效率提升433.33%
未来规划:私有化交付场景下,部署实施已经有了很大的效率提升,但后面日常运维工作还存在很多问题。从今年开始,我们会关注交付后的日常运维效能提升工作,包括线上问题的定位、排查、解决,业务监控,安全监测,运维日常监测等等能力建设。同时会结合AI能力做一些线上问题预测、问题自动定位、故障自愈等功能。
DevOps工具链的建设已经在科大讯飞中心化的系统开发运营中广泛运用,并取得了效率、质量提升的效果。但科大讯飞的业务有较多的ToB类客户局点交付场景,业务系统复杂度日益提高,对一线部署实施人员的技术能力、业务理解力都形成了较大的挑战,强烈需要通过自动化平台实现局点的系统自动化部署,降低部署实施难度,提升部署实施的成功率,缩短部署实施时间周期,最终对交付项目的快速验收形成有力支撑。
1. 交付部署实施时长缩短,工作量大幅减少。
2. 手工操作减少为零,杜绝人为失误导致的部署失败,以及误操作导致的安全隐患。
3. 大幅降低一线部署实施人员的技术门槛,减少培训成本。