DevOps标准,即研发运维一体化(DevOps)能力成熟度模型,涵盖的内容很多,包括端到端软件交付的生命周期全流程,是一套体系化的方法论、实践和标准的集合。(注意:Ops通常指“运维”,但在中国信息通信研究院牵头的DevOps能力成熟度模型中被称为“运营”。)
研发运维一体化总体架构可划分为四部分,即过程(含敏捷开发管理、持续交付、技术运维)、应用架构、安全管理和组织结构,如图2-1所示。
1.研发运维一体化过程
研发运维一体化过程的相关内容如下:
①敏捷开发管理:从需求管理、计划管理、过程管理、度量分析四个维度关注需求到开发阶段的有序迭代、灵活响应和价值的快速交付。
②持续交付关注应用软件集成交付环节:通过配置管理、构建与持续集成、测试管理、部署与发布管理、环境管理、数据管理和度量管理领域的能力建设和工程实践,保证软件持续、顺畅、高质量地对用户完成发布。
图2-1 研发运维一体化(DevOps)能力成熟度模型
③技术运维环节关注应用系统服务发布后的环节:涉及运维成本服务、高可用架构服务、用户体验服务、客户服务、监控服务、产品运行服务和运营数据服务,保障良好的用户体验,打造持续的业务价值反馈流。
2.应用架构、安全管理和组织文化建设
设计良好的应用架构有助于系统解耦和灵活发布,也是高可用系统的核心能力;端到端的安全考量和全局规划可以让安全发挥更大的价值,并真正助力全价值链。跨功能团队的组织架构和高度互信协同,责任共担的组织文化同样会对组织能力的提升带来正向作用。
以上几部分相互关联,密切协同,构成了一个有机整体,帮助组织IT效能不断进化,最终达成企业的业务目标。
研发运维一体化能力成熟度模型是一个系列标准,包括的标准名称和主要内容如下。
第1部分:总体架构
总体架构部分规定了研发运维一体化(DevOps)的概念范围、总体架构及能力成熟度模型,主要内容如下。
①引入配置项、制品、代码复杂度、部署流水线、研发运维一体化等基本概念。
②研发运维一体化(DevOps)能力成熟度的级别分为5个,即1级(初始级)、2级(基础级)、3级(全面级)、4级(优秀级)、5级(卓越级)。
③研发运维一体化总体架构,分为5部分:过程(敏捷开发管理、持续交付、技术运维)、应用设计、安全风险管理、评估方法、系统和工具技术要求。
④过程管理,分为3部分:敏捷开发管理、持续交付和技术运维。
⑤应用设计:有助于系统解耦和灵活发布,及时响应业务变化,也是高可用和高性能系统的核心能力。
⑥安全及风险管理:安全考量和全局规划,可以让安全发挥更大的价值,并真正助力应用的全生命周期安全管理。
⑦组织结构:跨功能团队的组织架构和高度互信协同,责任共担的组织文化同样会对组织能力的提升带来正向作用,主要从组织形态、文化塑造、人员技能、创新管理和变革管理五个维度的指标进行描述。
⑧评估方法:指研发运维一体化能力成熟度模型的通用评估方法,规定了研发运维一体化能力成熟度模型相关技术的分级指标内容明细、评估方式与验收条件。
⑨系统和工具技术要求:应具备的体系结构、功能要求、接口要求和技术要求,用于指导研发运维一体化(DevOps)平台产品的规划、设计和实现。
第2部分:敏捷开发管理过程
本部分规定了研发运维一体化(DevOps)能力成熟度模型下敏捷开发管理过程的能力成熟度要求和评价方法,主要内容如下。
①引入用户故事、用户故事地图、影响地图、A/B测试等敏捷开发术语和定义。
②敏捷开发管理:一种软件开发方法,应对快速变化的市场和技术环境,更强调价值交付过程中涉及的各类角色(如业务、产品、开发和测试等)之间的紧密协作,能够很好地适应变化的团队组织、协作和工作方式,主张演进式的规划和开发方式、持续和尽早交付,并不断反馈调整和持续改进,鼓励快速和灵活地面对变更,更注重软件开发过程中人的作用。
③价值交付管理:包括需求工件、需求活动两部分,体现需求管理过程中的分析、测试、验收三个阶段。价值交付管理主要体现在各环节中使用敏捷方法探寻用户(客户)问题和诉求、业务价值,以及定义有效产品功能的能力、适应需求变化的能力、快速验证反馈的能力,进一步定义需求工件和需求活动。
④敏捷过程管理:指产品经理、研发团队,以及与产品相关的干系人围绕业务价值交付进行的软件研发过程,包括价值流、仪式活动两部分,要求产品经理、团队和与产品相关的干系人建立以尽早持续交付有价值的软件为目标,通过高效的沟通方式、高效的可视化工作流程、有效的度量和快速反馈机制实现软件研发业务价值最大化,进一步定义价值流和仪式活动。
⑤敏捷组织模式:指团队在研发过程中的角色定义、角色能力及其协作,以及团队结构的工作方式、团队间的协作模式等方面的要求,主要从敏捷角色、团队结构两方面进行定义,进一步定义敏捷角色和团队结构。
第3部分:持续交付过程
本部分规定了研发运维一体化(DevOps)能力成熟度模型下持续交付过程的能力成熟度要求和评价方法,主要内容如下。
①引入配置项、制品、代码复杂度、部署流水线等术语定义。
②持续交付:指持续将各类变更(包括新功能、缺陷修复、配置变化、实验等)安全、快速、高质量地落实到生产环境或用户手中的能力。
③配置管理:指所有与项目相关的产物以及它们之间的关系都被唯一定义、修改、存储和检索的过程,保证软件版本交付生命周期过程中所有交付产物的完整性、一致性和可追溯性。
④构建和持续集成:构建是将软件源代码通过构建工具转换为可执行程序的过程,一般包含编译和链接两个步骤,将高级语言代码转换为可执行的机器代码并进行相应优化,提升运行效率。
⑤测试管理:指一个过程,对于所有与测试相关的过程、方法进行定义。在产品投入生产性运行前验证产品的需求,尽可能发现并排除软件中的缺陷,从而提高软件质量。
⑥部署和发布管理:泛指软件生命周期中,将软件应用系统对用户可见,并提供服务的一系列活动,包括系统配置、发布、安装等。整个部署和发布过程复杂,涉及多个团队之间的协作和交付,需要完备的计划和演练,保证部署发布的正确性。
⑦环境管理:DevOps持续敏捷交付过程中最终的承载,包括环境的生命周期管理、一致性管理、环境的版本管理。环境管理是用最小的代价来达到确保一致性的终极目标,主要包括环境类型、环境构建、环境依赖与配置管理三方面。
⑧数据管理:为了满足不同环境的测试需求,以及保证生产数据的安全,需要人为准备数量庞大的测试数据,保证数据的有效性,以适应不同的应用程序版本。另外,应用程序在运行过程中会产生大量数据,这些数据同应用程序本身的生命周期不同,作为应用最有价值的内容需要妥善保存,并随应用程序的升级和回滚进行迁移。
⑨度量和反馈:强调在持续交付的每个环节建立有效的度量和反馈机制,通过设立清晰可量化的度量指标,有助于衡量改进效果和实际产出,并不断迭代后续改进方向。另外,设立及时、有效的反馈机制可以加快信息传递速率,有助于在初期发现问题、解决问题,并及时修正目标,减少后续返工带来的成本浪费。度量和反馈可以保证整个团队内部信息获取的及时性和一致性,避免信息不同步导致的问题,明确业务价值交付目标和状态,推进端到端价值的快速有效流动。
第4部分:技术运维过程
本部分规定了研发运维一体化(DevOps)能力成熟度模型下技术运维管理的能力成熟度要求和评价方法,主要内容如下。
①技术运维管理目标:指以业务为中心,交付稳定、安全、高效的技术运维服务,构建业界领先的技术运维能力,支撑企业的持续发展和战略成功。技术运维不仅关注“稳定”“安全”和“可靠”,更关注“体验”“效率”和“效益”。
②技术运维管理过程:分为监控管理、事件与变更管理、配置管理、容量与成本管理、高可用管理、业务连续性管理、用户体验管理等。
③监控管理:指对研发运维过程中的对象进行状态数据采集、数据处理分析和存储、异常识别和通知及对象状态可视化呈现的过程,其成熟度决定了技术运维工作的立体性、及时性和有效性。
④事件和变更管理:指技术运维和IT服务过程的两个重要管理手段,包括事件管理和变更管理两部分。事件管理是对影响生产的事故和问题建立预防、高效处理及度量改进的制度和手段;变更管理是对IT基础设施、系统应用、业务产品配置等场景实施变更所进行的审批和控制流程。
⑤配置管理:指由识别和确认系统的配置项、记录和报告配置项状态和变更请求、检查配置项的正确性和完整性等活动构成的过程,目的是提供IT基础架构的逻辑模型,支持其他服务管理流程特别是变更管理和发布管理的运作。
⑥容量和成本管理:指对容量和成本进行评估、规划、分析、调整和优化的过程,结合了业务、服务和资源容量需求,以保证对资源的最优利用,满足与用户之间所约定的性能等级要求,在公司IT规模较大或业务快速增长时,容量和成本管理更重要。
⑦高可用管理:指系统无中断地执行其功能的能力,代表系统的可用性程度,包括应用高可用管理和数据库高可用管理两部。
⑧业务连续性管理:指对企业识别潜在危机和风险,并制定响应、业务和连续性的恢复计划的过程进行管理,目标是提高企业的风险防范意识,有效响应非计划的业务中断或破坏,并将不良影响降低到最低。
⑨用户体验(User Experience,UE/UX)管理。用户体验是用户在使用产品过程中建立起来的一种主观感受,一般是有关产品设计方面的,不同的产品对用户体验的追求不同。本节提到的用户体验管理指的是通过技术运维手段来提升用户使用产品直观感受。
第5部分:应用架构
本部分规定了研发运维一体化(DevOps)能力成熟度模型中应用设计能力的成熟度要求,主要内容包括如下。
①概念定义:引入软件架构、应用程序、运行时环境、软件包等定义。
②应用设计:DevOps技术能力包括开发技术、测试技术、运维技术等能力,其中开发技术中最核心的是应用设计相关技术。
③应用接口:指软件系统不同组成部分衔接的约定。
④应用性能:指应用实际性能(Real Performance,与感知性能Perceived Performance相对)和可用性(Availability)的度量,是衡量应用服务水平的重要指标。
⑤应用扩展:指应用程序在达到最大负载时支持进行扩展,以保证系统稳定运行的手段和方法,是应对高并发的重要手段。
⑥故障处理:指在系统失效、停止响应或出现异常时识别、规划和解决系统问题的过程。在系统运行过程中,运行环境的变化、软件本身的缺陷等可能造成系统运行故障,故障处理技术可以帮助快速修理和恢复系统。
第6部分:安全管理
本部分规定IT软件或相关服务在采用研发运维一体化(DevOps)统一开发模式下,如何保障IT软件和相关服务的安全,进行风险管理,主要内容包括如下。
①概念定义:引入安全基线、安全门限、安全态势感知、安全需求基线、安全需求标准库、暴力破解、分布式拒绝服务攻击、攻击面分析、工作项、黑盒安全测试、红蓝对抗等安全概念。
②安全及风险管理:相比于传统开发模型,IT软件或相关服务在采用研发安全运维一体化(DevSecOps)的开发模式下,安全需融入每个阶段,开发、安全、运维各部门需紧密合作。
③研发运维一体化控制通用风险。在DevOps模式下,安全内建于开发、交付、运维过程中,通用风险覆盖三个过程中的共性安全要求,包括组织建设和人员管理、安全工具链、基础设施管理、第三方管理、数据管理、度量与反馈改进。
④研发运维一体化控制开发过程风险管理:为保障进入交付过程的代码是安全的,降低后续交付、运维中的安全风险,保障研发运维一体化的整体安全,定义了从应用的开发过程开始需实施安全风险管理工作的管理过程,包括需求管理、设计管理和开发过程管理。
⑤研发运维一体化控制交付过程风险管理。交付过程是指从代码提交到应用发布给用户使用,定义了将安全内建到交付过程中的安全交付管理,包括配置管理、构建管理、测试管理、部署和发布管理。
⑥研发运维一体化控制技术运维过程的安全风险管理。技术运维过程是指应用发布给用户后的过程,定义了通过监控、运维、响应、反馈等实现技术运维的安全风险闭环管理方式将将安全内建于运维过程中,包括安全监控、运维安全、应急响应、运维反馈。
第7部分:组织结构
本部分规定了研发运维一体化(DevOps)能力成熟度模型中组织结构的能力成熟度要求,主要内容包括如下。
①概念定义:引入平台型组织、多功能团队等定义。
②组织结构:分别从组织形态、文化塑造、人员技能、创新管理、变革管理五个维度描述研发运维一体化(DevOps)能力成熟度模型在组织结构上的不同级别。
③组织形态:在DevOps场景中,采用适当组织形态,可以让团队各类角色更好地分工协作,降低组织内不同部门或角色之间的交接成本和等待浪费,对于达成企业的绩效目标非常关键。
④文化塑造:在DevOps场景中,文化塑造是基于组织发展的不同阶段而实现动态调整和升级的过程,是一个组织是否有能力适应快速变化环境和持续改进的关键要素。组织能力持续的改进依赖于组织内部是否能够形成高度信任、相互协作和持续学习的文化。
⑤人员技能:在DevOps场景中,人员专业化的能力并掌握多项技能的综合能力是在复杂环境中解决问题、提升绩效的关键要素;鼓励员工在专精专业领域技能的基础上,理解软件生命周期上下游的多种技能,成为多面手,能够促进整体价值流在公司内部更顺畅地流动。
⑥创新管理:在DevOps场景中,主动迎接需求变更,快速响应市场变化,需要组织激发出富有创造力的团队,培养团队成员形成一种创新的习惯,从而不断发现解决问题的新方法,或者将已有的技术进行应用创新,改善或改造产品,解决用户需求,并不断为组织创造新的机会和价值。
⑦变革管理:DevOps提倡变革,通过变革更好地强大自己,使得企业快速成长,从而更好地适应社会的发展。组织的DevOps转型成功与否,变革管理至关重要,需要对企业战略、组织结构、工作流程、工程工艺、技术方法和企业文化定期进行分析评估,不断改进,降低成本和减少浪费,达到最佳产出和效率最大化。
第8部分:系统和工具技术要求
本部分规定了研发运维一体化(DevOps)过程涉及的系统和工具的能力技术要求,主要内容包括如下。
①概念定义:引入负载均衡、网络钩子、生产环境、中间件等定义。
②总体架构:指将端到端软件交付生命周期全流程用工具链进行连接,包括项目与开发管理、应用设计与开发、持续交付(部署)、测试管理、自动化测试、技术运维。
③项目与开发管理:指根据用户要求建造出软件系统或者系统中软件部分的过程的管理工具,包括项目管理、工作项管理、计划管理、文档与知识管理、团队协同、统计度量、项目集管理。
④应用设计与开发:指应用架构设计与代码开发过程,包括应用框架、集成开发环境、威胁建模。
⑤持续交付(部署):指持续地将各类变更(包括新功能、缺陷修复、配置变化、实验等)安全、快速、高质量地交付到生产环境或用户手中的能力的管理工具。相关工具包括:版本控制系统、构建与持续集成、流水线、制品管理、部署管理、发布管理、环境管理、应用配置管理、数据变更管理、移动应用安全加固。
⑥测试管理:指对测试过程进行管理,从需求确定后进行测试用例编写到测试完成的管理工具。相关工具包括:用例与测试计划管理、测试数据管理。
⑦自动化测试:指以自动化的方式对应用进行功能与非功能测试。相关工具包括:代码质量管理、单元测试、接口/服务测试、UI测试、移动应用测试、性能测试、安全性测试。
⑧技术运维:指从技术方面支撑与完善IT系统日常运维保障、运维工具建设、运维决策辅助,从技术方面支撑业务运营,提升IT的业务价值,获得可持续竞争优势的管理方式与工具。技术运维管理过程分为:监控管理、事件管理与变更管理、配置管理、容量与成本管理、高可用管理、业务连续性管理、用户体验管理等。本节将从上述运营管理过程涉及工具的维度分别阐述。相关工具包括:配置管理、运维数据分析、应用性能监控、基础监控管理、日志监控管理、自动化作业平台、容量管理、成本管理、资产安全风险管理
DevOps标准的运行和实施、推广、应用情况
DevOps标准已经得到国内各行业广发接受和普遍认同,截至2022年第一季度,参考标准进行的企业包括银行、证券、保险、通信行业等领域的企业。