APP下载

基于DevOps的电力微服务建运协同工具的研究与应用

2021-01-30周司徒陈桂峰杜文辉

电子技术与软件工程 2020年22期
关键词:代码运维部署

周司徒 陈桂峰 杜文辉

(江苏电力信息技术有限公司 江苏省南京市 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理念的建运协同工具,贯穿项目从开发、测试到发布、运维的全生命周期,打通了电力软件开发的各个环节。它通过流水线的形式实现了过程管理的自动化,把人为参与的打包、部署、发布等过程转为自动运行,从而简化了沟通过程,促进协同开发一体化,极大地提高了工作效率。

猜你喜欢

代码运维部署
一种基于Kubernetes的Web应用部署与配置系统
晋城:安排部署 统防统治
部署
运维技术研发决策中ITSS运维成熟度模型应用初探
创世代码
创世代码
创世代码
创世代码
部署“萨德”意欲何为?
基于ITIL的运维管理创新实践浅析