
开发与运营,简而言之,DevOps,一直是我们加深对一切事物的认识的起点。这与DevOps概念中经常讨论的持续集成/持续部署(CI/CD)概念有关。DevOps的各个方面与持续的概念以及开发/管理周期中的步骤有关。了解DevOps会让公司忙着对“旧”的开发和管理概念进行**解释。DevOps可以在文献或大型互联网上找到。DevOps是一种“哲学”,这一点很快变得显而易见。换言之,如果没有严格的定义、解释和填充,企业很难接受这个概念。DevOps有很多秘密和挑战。与这个概念相关的方面的多样性和多样性使得理解DevOps概念的所有方面非常困难。
这本书对DevOps的各个方面进行了非常详细的描述,包括从理论背景下的实践经验中提出的各种**实践。这一背景使得将各个方面相互关联成为可能。。本书共分为8个部分:分别为 持续规划、持续设计、持续测试、持续整合、持续部署、持续监测、持续学习和持续评估。全书涵盖20多个案例,300多张图表。
本章阐述了本书的目标,然后为目标群体命名,讨论了“持续万物”的背景,简要说明了每一部分所涵盖的内容,介绍了本书的结构和内容,最后提供附录和阅读指南。
一、目标
本书的主要目标是提供一个持续万物工具箱。本书讨论了八个关键的连续万物方面的领域。当然还有很多其他方面的领域,但本书中选择的领域是一个很好的基础。由篇幅所限,领域的深度有限。这本书可供所有参与DevOps的人员参考。
二、目标群体
本书的目标群体都是DevOps团队中的成员,其中包括架构师、开发工程师、运维工程师、产品经理、Scrum master、敏捷教练以及用户组织的代表。当然,这本书也非常适用于通过DevOps方法参与创建信息供应的业务经理、流程所有者、流程经理等,以及不参与开发或管理的目标群体,包括质检员工和审计员,因为他们可以利用这本书来识别需要接受或控制的风险,也能确定价值流是否符合所要求的标准。
三、背景
这本书包含了各种方法和技巧,以持续的方式为持续万物提供事实基础。DevOps 八字环概述了“持续万物”的各个关键方面,如图0.1.1所示。
DevOps 八字环概述了持续生产软件所需的阶段。因此,DevOps八字环是定义持续万物(CE)概念的良好基础。CE概念以持续执行的活动的形式描述DevOps八字环的所有阶段。表0.1.1显示了DevOps八字环与“持续万物”各阶段之间的关系。
DevOps 八字环中不包含持续审核(9)和持续评估(10),也不包含其他“持续”领域(如持续自动化和持续增长)。这是为了保持DevOps 八字环清晰。
词语“持续”表示了DevOps团队内部工作的许多特征。第一,行动的频率高于传统的系统开发。这与建造和部署已经构建的东西有关。这可能体现在部署频率从分钟、小时到天不等。第二,“持续”是指工作的整体视角。例如,监控不限于生产环境,而是监控所有环境。第三,持续监控不仅对产品和服务进行监控,还对价值流乃至人们的知识和技能进行监控。这符合ITIL 4的人员、流程、合作伙伴和技术观点。第四,术语“持续”表示DevOps 八字环的各个阶段相互关联。例如,“规划”“设计”“部署”和“监控”等中都使用了持续测试。
四、结构
这本书总结了以前出版的八本书,见表0.1.2。
1.第一部分:DevOps持续规划
持续规划是一种可以掌握信息提供过程中所做的变更,以实现业务流程的成果改进,从而实现有效的业务目标的方法。该方法针对多个层次,为每个层次提供敏捷规划技术,细化更高级别的计划。这样,就可以在战略、战术和运营层面上,以灵活的方式进行规划,从而尽可能减少开销,增多价值。
持续规划包括规划技术,如平衡计分卡、企业架构、产品愿景、路线图、单页史诗故事、产品积压管理、版本规划和迭代规划,并指出这些技术是如何相互联系的。
2.第二部分:DevOps持续设计
持续设计是一种方法,旨在让DevOps团队提前简要地思考信息系统的轮廓,并在敏捷项目(迭进设计)期间实现设计的发展。这可防止界面风险并保证基本的知识转移,以支持管理和遵守法律和法规。这些要素保证了组织的连续性。持续设计包括设计金字塔模型,其中定义了以下设计视图:业务、解决方案、设计、需求、测试和代码视图。持续设计涵盖了信息系统的整个生命周期。
前三个视图是在价值流图和用例等现代设计技术的基础上完成的。然而,持续设计有效应用的重点在于通过将设计集成到行为驱动开发和测试驱动开发以及持续文档来实现信息系统建设。
3.第三部分:DevOps持续测试
持续测试是一种旨在在软件开发过程中提供快速反馈的方法,该方法是在开始构建解决方案之前将“什么”和“如何”定义为测试用例。因此,需求、测试用例和验收标准的概念集成在一种方法中。本部分使用定义、业务案例、架构、设计和最佳实践定义了持续测试。本部分讨论的概念包括变更范式、理想测试金字塔、测试元数据、业务驱动开发、测试驱动开发、测试策略、测试技术、测试工具和单元测试用例在持续测试中的作用。
4.第四部分:DevOps持续集成
持续集成是一种全面的精益软件开发方法,旨在以增量和迭代的方式制造并投入生产持续软件,以减少浪费作为高度优先事项。由于功能可以提前投入生产,持续集成的增量和迭代方法使得快速反馈成为可能。这样做可以减少浪费,因为产品修正的速度更快,得益于错误发现得更早,而且可以更快解决。在定义、业务用例、架构、设计和最佳实践的基础上讨论持续集成。此处讨论的概念包括变更范式、持续集成的应用、储存库的使用、代码质量、绿色代码、绿色构建、重构、基于安全的开发和内置故障模式。
5.第五部分:DevOps持续部署
持续部署是一种全面的精益生产方法,旨在以增量和迭代方式部署和发布持续软件,其中上市时间和高质量至关重要。持续部署可实现快速反馈,因为在生产CI/CD安全管道的较早阶段就可以检测错误。更快的、更节约成本的修复行动可以减少浪费。在定义、业务用例、架构、设计和最佳实践的基础上讨论持续部署。此处讨论的概念包括变更范式、持续部署的应用、系统持续部署安排的分步计划以及允许进行循环部署的许多模式。
6.第六部分:DevOps持续监控
持续监控是一种控制核心价值流(业务流程)和赋能价值流来支持这些核心价值流的方法。持续监控不同于传统监控,因为重点在于改进成果和衡量价值流的整体范围,即PPPT的所有四个视角(People—人员、Process—流程、Partner—合作伙伴和Technology—技术)的整个CI/CD安全流水线,这使得能够映射和消除价值流中的瓶颈。
使用持续监控层级模型中定义的监测功能来讨论持续监控。此层级模型对市场上可用的监控工具进行分类。本部分从定义、目标、度量属性、要求、示例和最佳实践等方面定义了每种监控原型,还指出了如何根据变更经理的范式和体系结构原则和模型设置持续监控。
7.第七部分:DevOps持续学习
持续学习是一种掌握实现组织战略所需能力的方法。为此,持续学习为人力资源管理提供了一种方法,可以逐步探讨能力的组织需求,并将这些需求转换为能力画像。此处定义的能力画像是在产生特定结果的某个Bloom(Bloom’s Taxonomy)级别上的知识、技能和行为集合,然后说将能力画像合并为依次形成功能模式,这样就获得了一个敏捷的工作空间。持续学习是在持续学习模式的基础上进行讨论的,该模式可以逐步将价值链战略转化为员工的个人路线图。本部分还介绍了如何根据变更经理的范式和架构原则与模型在组织中设置持续学习。
8.第八部分:DevOps持续评估
持续评估是一种旨在使DevOps团队在业务、开发、运营和安全领域不断发展知识和技能的方法。持续评估为DevOps团队提供了一个工具,使其了解发展现状以及后续步骤。
在商业案例、两种评估模型的体系结构和评估问卷的基础上,本部分对持续评估进行了讨论。DevOps多维数据集模型基于这样的理念,即可以从一个多维数据集的六个不同角度来查看DevOps,即“流程”“反馈”和“持续学习”“治理”“流水线”和“质保”。DevOps CE模型基于持续万物的视角:“持续规划”“持续设计”“持续测试”“持续集成”“持续部署”“持续监控”“持续学习”“持续评估”。
五、附录
附录包含重要信息,有助于更好地了解相关内容。
六、阅读指南
本书中的缩略词数量有限。但是,出现的术语以缩写的形式显示出来,以提高可读
性。附录二列出了这些缩写。
第一章?持续规划?1
第一节 持续规划简介··································································································2
一、目标····································2
二、定位····································2
三、结构····································2
第二节 基本概念和基本术语·······················································································3
一、基本概念··································3
二、基本术语··································4
第三节 持续规划定义································································································10
一、背景····································10
二、定义····································10
三、应用····································10
第四节 持续规划基础································································································12
一、变更模式··································12
二、愿景····································13
三、权力····································14
四、组织····································16
五、资源····································18
第五节 持续规划架构································································································19
一、架构原则··································19
二、架构模型··································23
第六节 持续规划设计································································································25
一、持续规划价值流·······························25
二、持续规划用例图·······························25
三、持续规划用例································26
第七节 持续规划模型································································································29
一、导言····································29
二、平衡计分卡·································29
三、企业架构··································34
四、产品愿景··································36
五、路线图···································41
六、产品待办事项列表······························42
七、发布计划··································43
八、迭代计划··································44
第二章?持续设计?··································································································47
第一节 持续设计简介································································································48
一、目标····································48
二、定位····································48
三、结构····································50
第二节 基本概念和基本术语·····················································································51
一、基本概念··································51
二、基本术语··································52
第三节 持续设计定义································································································54
一、背景····································54
二、定义····································54
三、应用····································54
第四节 持续设计基石································································································55
一、变更模式··································56
二、愿景····································56
三、权力····································58
四、组织····································61
五、资源····································62
六、瀑布设计与持续设计的比较··························63
第五节 持续设计架构································································································65
一、架构原则··································65
二、 架构模型··································67
第六节 持续设计设计································································································69
一、持续设计价值流·······························69
二、持续设计用例图·······························69
三、持续设计用例································69
第七节 业务视图·······································································································73
一、导言····································73
二、系统上下文图································74
三、价值流画布·································76
第八节 解决方案视图································································································80
一、简介····································80
二、用例图···································80
三、系统构建块·································84
四、价值流映射·································94
第九节 设计视图·······································································································98
一、简介····································98
二、用例····································99
第十节 需求视图·····································································································105
一、简介···································105
二、BDD···································106
第十一节 测试视图··································································································109
一、简介···································109
二、测试驱动开发·······························110
第十二节 编码视图··································································································112
一、简介···································113
二、持续文档化································113
第十三节 在Assuritas中持续设计··········································································120
一、Assuritas·································121
二、持续设计·································122
第三章?持续测试?································································································128
第一节 持续测试简介······························································································129
一、目标···································129
二、定位···································129
三、结构···································129
第二节 基本概念和基本术语···················································································131
一、基础概念·································131
二、基本术语·································131
第三节 持续测试定义······························································································134
一、背景···································135
二、定义···································135
三、应用···································135
第四节 持续测试基础······························································································136
一、变更模式·································137
二、愿景···································137
三、权力···································140
四、组织···································143
五、资源···································145
第五节 持续测试架构······························································································146
一、架构原则·································147
二、快速反馈和延迟反馈····························150
三、测试类型矩阵·······························151
四、测试技术矩阵·······························152
五、测试对象矩阵·······························153
六、测试工具矩阵·······························155
第六节 持续测试设计······························································································156
一、持续测试价值流······························156
二、持续测试用例图······························158
三、持续测试用例·······························158
第七节 持续测试最佳实践·······················································································161
一、行为驱动开发·······························162
二、测试驱动开发·······························164
三、单元测试策略·······························165
四、通用测试策略·······························166
五、其他···································168
第四章?持续集成?································································································170
第一节 持续集成简介······························································································171
一、目标···································171
二、定位···································171
三、结构···································171
第二节 基本概念和基本术语···················································································173
一、基本概念·································173
二、基本术语·································176
第三节 持续集成定义······························································································178
一、背景···································178
二、定义···································179
三、应用···································179
第四节 持续集成的基石···························································································180
一、变更模式·································180
二、愿景···································181
三、权力···································183
四、组织···································187
五、资源···································189
第五节 持续集成架构······························································································191
一、 架构原则·································191
二、版本控制·································194
三、快速和延迟反馈······························200
第六节 持续集成设计······························································································201
一、持续集成价值流······························201
二、持续集成用例图······························201
三、持续集成用例·······························202
第七节 持续集成最佳实践·······················································································205
一、集成路线图································205
二、协作——分支与合并····························206
三、 协作——绿色构建·····························210
四、协作 —— 改善······························211
五、编码质量·································212
六、非功能需求································213
七、其他···································214
第五章?持续部署?································································································218
第一节 持续部署简介······························································································219
一、目标···································219
二、定位···································219
三、结构···································219
第二节 基本概念和基本术语···················································································220
一、基本概念·································221
二、基本术语·································222
第三节 持续部署的定义···························································································224
一、背景···································224
二、定义···································225
三、应用···································225
第四节 持续部署基石······························································································226
一、变更模式·································226
二、愿景···································227
三、权力···································229
四、组织···································232
五、资源···································235
第五节 持续部署架构······························································································236
一、架构的原则································236
二、持续部署与持续交付····························240
三、快速反馈和延迟反馈····························240
四、持续部署的路线图·····························241
五、持续部署的模式······························241
第六节 持续部署设计······························································································243
一、持续部署的价值流·····························243
二、持续部署的用例图·····························243
三、持续部署的用例······························243
第七节 持续部署最佳实践·······················································································246
一、持续部署的路线图·····························247
二、基于环境的部署模式····························249
三、基于应用的部署模式····························253
四、模式的组合································255
第六章?持续监控?································································································258
第一节 持续监控简介······························································································259
一、目标···································259
二、定位···································259
三、结构···································259
第二节 基本概念与术语···························································································260
一、基本概念·································261
二、基本术语·································263
第三节 持续监控的定义···························································································264
一、背景···································264
二、定义···································265
三、应用···································265
第四节 持续监控的基石···························································································266
一、转化模式(变更模式)···························267
二、愿景···································267
三、权力···································269
四、组织···································272
五、资源···································274
第五节 持续监控的架构···························································································276
一、架构原则·································276
二、架构模型·································280
第六节 持续监控的设计···························································································286
一、持续监控的价值流·····························286
二、持续监控的用例图·····························286
三、持续监控的用例······························288
第七节 业务服务监控······························································································293
一、简介···································294
二、价值流监控································294
三、信息流监控································296
四、实时用户监控(RUM)···························298
第八节 信息系统服务监控·······················································································301
一、简介···································301
二、终端用户体验监控(EUX)·························301
三、端到端的基础设施监控···························302
四、域基础设施监控······························303
第九节 应用服务监控······························································································304
一、简介···································304
二、应用程序接口监控·····························305
三、基础设施服务监控·····························306
第十节 功能组件服务监控·······················································································307
一、简介···································307
二、内部服务监控·······························308
三、事件监控·································309
四、资源监控·································310
五、嵌入式组件监控······························312
第十一节 监控功能检查清单···················································································313
一、监控检查清单·······························313
二、业务服务监控检查清单···························313
三、信息系统服务监控检查清单·························314
四、应用服务监控检查清单···························315
五、功能组件服务监控检查清单·························315
第七章?持续学习?································································································317
第一节 持续学习简介······························································································318
一、目标···································318
二、定位···································318
三、结构···································318
第二节 基本概念和基本术语···················································································319
一、基本概念·································319
二、基本术语·································325
第三节 持续学习的定义···························································································328
一、背景···································328
二、定义···································328
三、应用···································328
第四节 持续学习·····································································································329
一、变更模式·································330
二、愿景···································330
三、权力···································332
四、组织···································334
五、资源···································336
第五节 持续学习架构······························································································338
一、架构原则·································338
二、架构模型·································341
第六节 持续学习设计······························································································344
一、持续学习价值流······························345
二、持续学习用例图······························345
三、持续学习用例·······························346
第七节 持续学习最佳实践·······················································································350
一、简介···································351
二、价值链战略································351
三、角色···································356
四、能力···································360
五、知识体系·································361
六、路线图··································363
七、认证···································368
第八章?持续评估?································································································370
第一节 持续评估简介······························································································371
一、目标···································371
二、定位···································371
三、结构···································371
第二节 基本概念和基本术语···················································································372
一、基本概念·································372
二、基本术语·································373
第三节 持续评估定义······························································································375
一、背景···································375
二、定义···································376
三、应用···································376
第四节 持续评估的基础···························································································377
一、变更模式·································377
二、愿景···································378
三、权力···································379
四、组织···································382
五、资源···································384
第五节 持续评估架构······························································································385
一、架构原则·································386
二、架构模型·································388
第六节 持续评估设计······························································································393
一、持续评估价值流······························393
二、持续评估用例图······························393
三、持续评估用例·······························394
第七节 DevOps 立方体评估模型·············································································398
一、第一面——工作流·····························398
二、第2面——反馈······························399
三、第3面——持续学习和实践·························401
四、第四面——治理······························401
五、第5面——端到端部署管道·························403
六、第六面——质量保证····························403
第八节 DevOps CE评估模型··················································································404
一、CP····································404
二、CN····································407
三、CT····································410
四、CI····································413
五、CD····································415
六、CM···································417
七、CO···································420
八、CL····································422
九、各方面的概览·······························425
附录一 术语表·········································································································428
附录二 缩写·············································································································438
新兴的IT管理方法——DevOps,企业用于评估自身能力成熟度的衡量尺
刘合翔,北京大学博士,EXIN专家组成员,DPO 2019**授权讲师,DPO 网络论坛主理人。曾参与国内相关立法的意见征求,培训了国内早期一批获数据保护官认证的领域从业者,曾任国家政府研究机构的研究员和互联网上市公司高管。现任职于杭州电子科技大学,从事大数据治理有关的科研与实践工作。