基于DevOps的电力微服务建运协同工具的研究与应用
2021-01-30周司徒陈桂峰杜文辉
周司徒 陈桂峰 杜文辉
(江苏电力信息技术有限公司 江苏省南京市 210000)
DevOps 源于“Development(开发)”和“Operation(运维)”两个词的缩写,软件开发和IT 运维的结合被称为DevOps。DevOps是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。[1]
早在十年前,就有人提出了DevOps 的思想,但由于技术工具的缺失,这一思想在当时未能实现。随着技术的不断发展,特别是近几年来微服务和容器技术的兴起,为DevOps 的实施提供了必要的技术条件,使得通过自动化流程完成软件构建、测试、发布成为可能。目前,DevOps 已经成为了软件技术领域研究热点,其主要功能是稳定电网运行基础上,构建更加快捷服务模式,进而减少开发成本。[2]
当前,电力内部各个信息系统分派给不同厂商进行独立开发和管理,缺乏统一的服务管理与项目协同平台。在国网公司全面推进中台建设的背景下,这种管理方式很难响应中台建设过程的快速迭代、共享服务、快速灵活的要求。DevOps 是电网企业开发、运营和质量保障的结合体,能够打通软件开发与技术运营之间的屏障,使其能够相互协作。[2]因而,迫切需要基于DevOps 理念建设的建运协同工具,来支撑所有厂商的开发流程与协同管理,推动“三型两网、世界一流”战略目标的落地。
图1:总体业务流程
图2:关键技术选型
图3:边界设计
图4:与CMDB 的交互
1 系统设计
遵从国家电网信息化架构的设计理念,根据平台的实际需求,在保障电力内网环境畅通的前提下,确定建设建运协同工具所需要的基础业务架构有:
(1)应用服务器一台;
(2)数据库服务器一台;
(3)软件:操作系统、数据库、JDK、中间件(Tomcat、Nginx)、Jenkins、Git、打包工具(Ant、Gradle、Maven)、白盒扫描工具(Fortify)等;
(4)安装环境兼顾前端、后端、数据库。
2 总体业务流程
如图1所示,建运协同工具的业务流程主要包括以下三大部分:
(1)项目管理:提供厂商的资料和人员管理;提供项目和应用的管理;作为流程的入口和关联信息;提供模板简化通用化的操作;
(2)持续集成:支持代码从编写到构建、打包、发布使用的功能模块,包括代码仓库管理、代码制品管理、代码检查、代码构建打包、模板管理、自动化部署等等;基于jenkins 提供流水线和各个模块的组合;系统默认根据场景设定基本流程编排,支持自定义组合编排。
(3)持续部署与发布:支持不同环境下的持续部署和测试;提供检修单管理、安全测试和监理测试任务管理。
3 关键技术选型
如图2所示,建运协同工具使用的关键技术包括:
(1)代码管理工具:使用GitLab 等版本管控工具对源码进行管理;
(2)构建工具:使用maven、gradle 等构建工具对代码进行编译、构建、打包等;
(3)持续集成(CI):采用jenkins 等流水线工具,对项目的整个流程进行调度管理;提供流程配置等功能;
(4)配置工具:采用Shell 等脚本技术对配置信息和配置文件进行管理;
(5)容器:采用Docker 技术将应用部署至云端虚拟机;
(6)编排工具:使用Kubernetes 进行系统部署的编排操作;
(7)测试工具:使用fortify 等对代码进行静态扫描;使用Appscan 黑盒工具对系统进行安全测试;
(8)应用服务器:使用tomcat/weblogic等应用服务器部署应用;
(9)性能测试:采用jemeter 集成进行性能测试;
(10)黑盒测试:采用appscan 扫描工具;
(11)软件自动化:使用rpa机器人,操作appscan自动录制脚本,进行自动点击测试;
(12)API 测试:采用Jemeter 进行API 测试,测试完毕后将API 脚本进行性能测试。
4 边界设计
如图3、图4所示,建运协同工具与其他服务或接口的交互关系是:
(1)通过统一认证获取登陆用户,统一权限获取用户角色,来控制用户的登陆和权限;
(2)登陆成功后,向统一工作流发送代办密钥申请,并获得密钥;
(3)系统构建成功后,通过统一工作流发起检修和测试任务,检修完成后,发送代办发布系统;
(4)通过非结构化进行制品的管理,通过CMDB 与应用商店来部署打包后的产品。
5 结语
综上所述,基于DevOps理念的建运协同工具,贯穿项目从开发、测试到发布、运维的全生命周期,打通了电力软件开发的各个环节。它通过流水线的形式实现了过程管理的自动化,把人为参与的打包、部署、发布等过程转为自动运行,从而简化了沟通过程,促进协同开发一体化,极大地提高了工作效率。