浅谈DevOps在核电大型管理系统中的应用
2020-02-22任宇阳杨青林汪淑平
任宇阳 杨青林 汪淑平
摘 要:随着国内核电的高速发展,传统的核电信息系统开发和运行架构面临着开发效率低、维护成本高、升级困难等问题。为解决这些存在的问题,本文将对核电大型管理系统中应用开发及运维作为整体的DevOps技术进行介绍和分析,并对DevOps在当前核电大型管理系统管理过程中的应用进行研究,为核电大型管理系统中的运行架构的发展提供研究基础,推动核电大型管理系统高效管理要求,满足核电业务发展的需求。
关键词: DevOps 核电大型管理系统 开发运维一体化 信息化建设
中图分类号:TP311 文献标识码:A 文章编号:1674-098X(2020)09(a)-0168-04
Abstract:With the construction and development of nuclear power in China, the development and operation architecture of traditional nuclear power information systems is facing problems such as low development efficiency, high maintenance costs, and difficult upgrades. In order to solve these existing problems, this article will introduce and analyze the DevOps technology of application development and operation and maintenance as a whole in the large-scale nuclear power management system, and study the application of DevOps in the current large-scale nuclear power management system management process. It provides the research foundation for the development of operation architecture in large scale nuclear power management system, promotes the efficient management requirements of large-scale nuclear power management systems, and meets the needs of nuclear power business development.
Key Words: Devops; Large nuclear power management system; Integration of development and maintenance; Information construction
目前,信息系统已经应用于核电企业的各个环节,包括核动力机组的运行、维修、设备管理領域等,但目前核电厂存在应用系统多,各系统存在孤岛等问题,大型应用系统如EAM、ERP等受到国外技术限制,并且面临系统升级需要停机、运行速度慢等问题。随着核电数字化、智能化建设不断深入,传统的信息系统开发运行架构已经无法满足核电用户需求,取而代之的将是以快速开发、快速部署为目标的分布式技术架构。因此,核电信息系统,尤其是大型核电管理信息系统的建设,必然要构建一个更优的开发运维技术平台。
1 核电大型管理系统建设面临的问题
核电信息系统在给核电企业生产运营带来便利的同时,核电管理信息系统在建设中也和其他行业传统信息系统一样,存在着诸多亟需解决的问题。
1.1 内部职责划分不清
传统信息系统的全生命周期管理往往被分为3个阶段:开发、测试和运维,而这3个阶段也通常会由不同部门进行管理。任何阶段或部门出现问题,都可能会对运行环境中的信息系统造成隐患甚至故障。但是由于这3个阶段的环境、职责等因素不同,往往无法追查到最终的责任环节或部门。
1.2 系统建设周期长
传统信息系统从开发、测试再到上线,都需要进行反复的验证,但由于3个阶段的环境会存在不同之处,有可能造成在不同环境下的信息系统程序存在各种问题,导致最终信息系统交付及上线时间延期。
1.3 系统升级风险大
原来传统信息系统升级时,因需求增加导致的系统功能调整,当存在测试不完整的情况时,在生产运行环境下进行应用程序发布,可能会对生产环境造成运行不稳定的风险。此外,原有大型管理系统升级必须停机,针对一些核心核电生产管理系统,停机可能影响核电厂生产管理工作,需要新技术改善此问题。
2 DevOps概念及优势
2.1 DevOps概念
以前为了能够按时保质保量交付信息系统,传统软件开发中会把开发和运维分开,但这样的做法并不适合现代软件产品和服务的需求。于是,IT行业逐步形成了把开发和运维作为整体的DevOps工程思想。与此同时,希望通过建设某个平台或工具以支持开发和运维的管理工作,形成一系列的持续集成[1],持续交付,自动化恢复系统,自动化测试监控[2],自动化部署,弹性伸缩等功能,以提升开发测试效率,简化开发、测试及运维过程的管理,降低产品交付风险,降低沟通及运营成本。
DevOps 是 Development和Operations的组合,是开发、运维和质量保证(QA)三个部门/主体之间进行沟通、协作和集成所采用的流程、方法和体系的一个集合,是对信息系统产品或服务,满足某个业务目标,对开发与运维之间相互依存关系的一种新的理解[1]。如图1所示。
DevOps旨在解决传统IT运维模式的痛点,填补开发与运维之间的间隙,将开发、运维和测试有机融合。用一句话来说,DevOps 就是打通开发运维的壁垒,实现开发运维一体化,可以总结为一个能力环来解释DevOps的概念。如图2所示。
2.2 DevOps优势
在目前流行的敏捷开发中,已经将整个软件开发流程中的需求->开发->测试三个环节囊括在内,指导这三个阶段的相关团队提升效率,但这其中没有包含部署环境,敏捷开发流程也并没能解决开发与运维之间的衔接问题。DevOps就是想把最后部署环节也囊括到这个循环流程中。图3清晰地说明了软件开发模式的演进过程。
3 核电大型管理系统中DevOps的应用研究
DevOps的技术发展及管理模式符合核电大型管理系统中以客户需求为导向的要求。通过使用DevOps的一系列工具及平台,能有效实现一系列的持续集成,持续交付,自动化恢复系统,自动化测试监控[2],自动化部署,弹性伸缩等功能。
3.1 DevOps流程
在核电大型管理系统建设过程中,利用完善的DevOps工具链,建立起了涵盖应用全生命周期的DevOps流程。流程的角色一般划分为功能负责人、开发人员、测试人员、运维人员、流程负责人。将DevOps流程分为5个阶段:
(1)项目规划阶段:明确项目的工作任务书,对项目的目标、需求、进度、质量、潜在的技术问题和风险、成本及其影响进行评估,组织团队,并确定基本规则。
(2)需求和设计阶段:将项目的工作任务书扩展成详细的产品定义,包括完整的产品定义、开发、测试、运维的方法、项目计划。
(3)服务开发和验证阶段:完成服务设计、开发、集成、验证、实施、性能测试、可靠性测试、安全测试等各个方面的工作。
(4)服务发布阶段:评估系统是否满足上线条件,当开发/测试环境中的代码通过自动化测试,流水线会将代码自动部署到生产环境中。
(5)服务生命周期阶段:包括对服务上线的监控、运维、变更管控等活动。上线后,运维人员在自动化监控工具的帮助下持续监控功能状态。
同时,DevOps对迭代的过程活动进行设计。如图4所示。
3.2 DevOps工具
在核电大型管理系统建设中,使用的DevOps主要工具如表1所示。
3.3 DevOps应用
DevOps 能够满足核电行业对于 IT 运维管理上的需求,在众多大中型企业得到了应用实践[4]。核电大型管理系统建设从项目管理、需求管理、流水线和门禁配置、个人构建、测试验证、发布版本、灰度发布等方面进行了DevOps应用实践。
3.3.1 项目管理
项目负责人在规划和设计阶段,需要明确项目的范围、整体流程、质量要求,并将相关信息同步到项目全员。服务项目整体规划,包括团队组建、交付范围和时间点确定、版本里程碑规划等。项目整体流程和规范制定,包括接口规范、接口变更管控规则、需求规范、编码规范、服务上线要求、服务发布规范。架构工程师进行系统的总体架构设计、微服务解耦、协助制定相关技术开发规范。服务负责人(Service Leader)在规划和设计阶段时,需要制定服务组组内的微服务开发流程、分支策略。各领域负责人(集成测试/安全/运维/运营)在规划和设计阶段时,反馈给领域的开发要求,并制定相关规范。
3.3.2 需求管理
所有需求都必须录入Backlog,做到可视化、可管控、可追溯。需求要有明确的验收标准。以任务项为粒度进行交付,任务项不跨微服务/组件,满足INVEST原则,迭代完成的标志是任务上线。需求落地时间原则上不可变更,如需变更迭代,需要需求人确认。需求需要关联代码提交记录和自动化用例。如果需求没有实现自动化,原则上所有环境都需要手工验证。
3.3.3 流水线和门禁配置
项目规划和设计时,设计一条标准流水线和门禁模版,所有微服务使用同一套流水线模版进行配置。一条智能型流水线是实现需求快速交付的基石。
3.3.4 个人构建
个人构建是开发工程师在代码入库前的工程活动,包括本地构建、本地静态检查和单元测试以及Alpha环境部署后的测试,如静态扫描、单元测试、API测试、契约测试。
3.3.5 测试验证
代码入库后,流水线自动拉起构建、环境部署和验证,并配置门禁智能检验质量。
3.3.6 发布版本
在生产环境运行的任何一个软件包,都能找到软件包唯一对应的自研源码、开源软件及版本、公共组件。变更/发布过程可追溯,从生产环境变更历史列表中选择任意一次变更,都能关联到本次变更实现的需求/缺陷列表,进而追溯到对应的开发人员、变更对应的流水线工具记录(代码检查、运行测试、构建环境配置、变更审批记录)等。
3.3.7 灰度发布
使用灰度发布,降低升级的风险。灰度发布流程,如图6所示。
项目经理PM/服务负责人SL基于本周期内规划需求,组织团队明确灰度发布开展节奏,并确定需要开展用户灰度的特性清单。开发人员完成灰度方案开发后,需要在测试环境完成对应的功能、非功能验证,包括升级、回滚等,对验证结果进行评估和确认。开发人员基于环境灰度发布策略、特性灰度发布上线方案,使用工具启动灰度上线。并遵从灰度发布上线策略、在线监控等活动,在满足质量出口要求后再扩大发布,直到完成全网上线升级。
4 结语
本文对目前IT技术流行的开发模式进行简要分析,认为在核电大型管理系统的建设中采用基于DevOps的开发架构,能有效提高核电大型管理系统的交付速度与质量,实现高效、高质量、自动化地将最新功能交付给客户,并能有效避免传统开发及运维系统中发现的问题。通过在核电大型管理系统中进行的DevOps应用研究,一方面,为后续的核电信息化建设工作奠定基础;另一方面,核电企业也需要DevOps体系的支持,对传统信息化系统开发及运维架构进行改造,以适应高并发量、大数据量的快速扩展,才能做到更好地为用户服务,推进核电智能化发展。
参考文献
[1] 高翔,朱杰媛.持续集成在软件项目管理中的作用[J].机电信息,2019(17):177-178.
[2] 霍娜.DevOps让快速交付成现实[N].中国计算机报,2014-09-15.
[3] EZHUMBLE,DAVIDFARLEY.持续交付发布可靠软件的系统方法[M].北京:人民邮电出版社,2011.
[4] 张贝贝.DevOps:推到隔阂之墙[J].软件和信息服务,2013(8):38-42.
[5] 邹筱菁,柯林.基于DevOps的软件开发管理模式[J].数字技术与应用,2016(11):184-187,217.
[6] 沈欣媛.我国核安全监管法律法规体系对聚变堆适用性研究[D].北京:中国科学技术大学,2019.
[7] 吴爱民.WANO性能指标在核电厂生产管理信息系统中的应用研究[D].济南:山东大学,2019.
[8] 李彥青.基于PDA的电力工程施工质量信息采集系统构建与开发[D].北京:华北电力大学,2017.
[9] 张晓香.规模化敏捷方法在软件企业的应用研究[D].兰州:兰州大学,2018.