
本书基于DevOps的文化和理念,介绍基于DevOps的研发流程一体化的过程。 本书分为理论篇和实践篇。理论篇包括5章:DevOps诞生与发展,DevOps标准与落地框架,软件交付,基础设施即代码,软件质量管理。实践篇包括5章:DevOps基础实践,DaseDevOps示例程序,DaseDevOps测试用例,CI/CD实践,发布平台监控与日志实践。 本书内容充实、结构清楚,理论与实践相结合,适合作为高校相关课程的教材,也适合DevOps初学者和从事该行业并需要提升DevOps技能的人员参考。
前 言 工欲善其事,必先利其器。 ——《论语·卫灵公》 背景 在无数个“偃师造人”的梦想下,人工智能走到了今天,同样在“无数个提篮印花机”对通用计算的追求下,程序设计已经成了人类意志对机械进行重塑的最有效方法之一。伴随着半导体的巨大进步、计算机从“旧时王谢堂前燕”,一跃发展到“飞入寻常百姓家”,这一巨大成功也将一大批软件、硬件、互联网行业带到了发展的快车道。随着《中共中央关于制定国民经济和社会发展第十四个五年规划和二〇三五年远景目标的建议》的发布,“数字化”一词首次进入国家五年计划,成为举国上下共同的发展目标,在当今数字化转型时代下,疫情反复更是加速了各行各业数字化转型的步伐,软件应用已经成为了各行各业的核心基础设施。企业转型与快速发展带来的业务异构化导致了整体软件生态多样化、异构化,整个行业走向更为松散、分布式、标准的服务架构,而大规模应用AI、自动化、区块链、物联网、5G、云计算和量子计算的能力使得整体软件研发生态系统变得规模化和复杂化。软件工程的复杂度在不断地提升,软件工程本身的规模复杂度也在不断提升。对云原生和全面数字化时代中的软件产品,如何适应并响应用户快速变化的需求、如何支持大规模用户在线活动并提升系统的稳定,如何提升产品交付质量、如何增加自主可控和更低的成本等变成各行各业迫在眉睫需要解决的问题。 从提出到现在,DevOps已经历经了十几年的时间,是基于精益、敏捷、丰田生产系统、柔性工程、学习型组织、安全文化等产业实践知识体系之上总结出来的工程文化和工程流程,被越来越多的企业采纳和使用,也是目前企业数字化转型的核心技术点。 相关人才需求与高校教学现状 结合CSDN深度调研的《2022中国开发者大调查》和依据GitHub发布的《Octoverse 2021年度报告》,我们得出了这样的结论: 截至2022年上半年,仅中国的软件开发人员约有750万左右,这个数字还在持续增长中。云原生成为了驱动业务增长的重要引擎。但是国内有70%的开发者完全不懂或者只了解一些概念。75%的开发者在刚上手的工作中接触了DevOps相关实践,有三年以上经验的占比仅仅7%。 在软件工程领域,软件工程本身的规模随着团队的业务架构复杂度在不断提升,导致需要足够复杂的业务来完成一个软件的构建,即:要完成一个软件产品从设计到最终的发布需要很多其他角色通力合作,包括设计团队、研发团队、测试团队、交付团体、需求团队等,这些也体现在我们研究与实践项目水杉在线平台的研发过程中。传统课程与实验教学中学习到的软件开发测试技能逐渐成为整个软件研发流程中的一个小的环节,数字化协作工作流程和方式不断发生更新迭代,如何通过实验让同学们在掌握基础软件研发技能的同时,掌握整个基础软件研发流程中人员协作、流程规范、协同链路,掌握端到端的设计思维、敏捷和DevOps实践框架,无缝地构思、构建、评估、迭代和扩展的解决思维与方法。这些是数字化企业软件开发协同的新生态工具链成为一个校内这类课程的问题和难点。 本书就是基于这样的背景,通过原理和实践,将DevOps文化理念与工程实践方法传递给从业者或者即将踏入相关岗位的学生。 内容介绍 本书内容分为理论篇和实战篇,具体如下。 原理篇包括5章,具体为:第1章,DevOps诞生与发展;第2章,DevOps标准与落地框架;第3章,软件交付;第4章,基础设施即代码;第5章,软件质量管理。 实战篇包括5章,具体为:第6章,DevOps基础实践;第7章,DaseDevOps示例程序;第8章,DaseDevOps测试用例;第9章,CI/CD实践;第10章,发布平台监控与日志实践。 全书理论阐述深入浅出,实践操作翔实有据,非常适合软件领域的从业者阅读,也是相关领域学生的优秀教参。本着开源放开共享的精神,实验项目中的案例代码也放在GitHub的OpenEduTech/DaseDevOps网页中,读者可以在此下载、共建,也可以在线和我们进行沟通。 本书由华东师范大学数据科学与工程学院张琰彬和蒲鹏老师组织撰写,王伟老师参与审阅。原理篇由业界知名一线专家撰写。实践篇,除了行业专家的参与,华东师范大学数据科学与工程学院研究生陈烨、李锦路、司琦、陈可璇、宁志成、王原昭、雷镇豪、郑泽洪、张天赐、张欣然等同学参与了整理和校对工作。还有很多在出版过程中给予帮助的人,限于篇幅,不再一一列出,在此一并感谢! 作 者
目 录 理 论 篇 第1章 DevOps诞生与发展 3 1.1 DevOps概述 4 1.1.1 DevOps文化 4 1.1.2 DevOps实践 5 1.1.3 DevOps生命周期 5 1.2 DevOps的诞生 7 1.2.1 DevOps的历史 7 1.2.2 DevOps的优势 9 1.3 DevOps的现状和发展趋势 10 1.3.1 DevOps的现状 10 1.3.2 DevOps的发展趋势 12 1.4 DevOps与开源 17 本章小结 19 参考文献 19 习题1 19 第2章 DevOps标准和落地框架 20 2.1 DevOps标准概述 21 2.2 DevOps标准主要内容 21 2.2.1 DevOps标准总体架构 21 2.2.2 DevOps标准名称和主要内容 22 2.3 站点可靠性工程SRE 27 2.3.1 SRE概述 27 2.3.2 SRE的核心原则 29 本章小结 29 参考文献 29 习题2 30 第3章 软件交付 31 3.1 软件交付流程介绍 32 3.2 软件交付涉及的工具 32 3.3 持续集成 35 3.4 持续部署 38 3.5 渐进式部署 39 3.6 基于容器的交付 40 本章小结 45 参考文献 45 习题3 46 第4章 基础设施即代码 47 4.1 传统的基础设施 48 4.2 基础设施即代码 48 4.3 GitOps实践 50 4.3.1 Argo CD 50 4.3.2 Flux CD 52 本章小结 54 参考文献 54 习题4 54 第5章 软件质量管理 55 5.1 测试自动化 56 5.1.1 测试自动化与DevOps的关系 56 5.1.2 测试数据构造 57 5.1.3 单元测试 60 5.1.4 接口自动化测试 67 5.1.5 UI自动化测试 73 5.1.6 客户端性能测试 76 5.1.7 服务器性能测试 79 5.1.8 兼容性测试 89 5.1.9 客户端稳定性测试 92 5.1.10 服务器稳定性测试 94 5.2 线上监控体系 97 5.2.1 接口自动化巡检 97 5.2.2 UI自动化巡检 99 5.2.3 用户反馈监控 99 5.2.4 资源监控 102 5.2.5 业务质量指标监控 107 5.3 质量标准化与可视化 110 5.3.1 质量标准化管理 110 5.3.2 质量标准化和可视化实施 113 5.4 测试智能化 118 5.4.1 测试智能化与DevOps的关系 118 5.4.2 精准测试 118 5.4.3 引流测试 120 5.4.4 契约测试 124 5.4.5 MLOps简介 127 本章小结 130 参考文献 131 习题5 131 实 践 篇 第6章 DevOps基础实践 135 6.1 阿里云容器镜像云基础实践 136 6.1.1 实验目的和实验环境 136 6.1.2 实验步骤 137 6.2 Git基础实践 140 6.2.1 实验目的和实验环境 140 6.2.2 实验步骤 141 6.3 GitHub基础实践 142 6.3.1 实验目的和实验环境 143 6.3.2 实验步骤 143 6.4 JihuLab基础实践 149 6.4.1 实验目的和实验环境 149 6.4.2 实验步骤 149 6.5 Docker基础实践 153 6.5.1 实验目的和实验环境 153 6.5.2 实验步骤 153 6.6 Python基础实践 157 6.6.1 实验目的和实验环境 157 6.6.2 实验步骤 157 6.7 Java基础实践 159 6.7.1 实验目的和实验环境 159 6.7.2 实验步骤 160 6.8 Node.js基础实践 164 6.8.1 实验目的和实验环境 164 6.8.2 实验步骤 164 本章小结 166 第7章 DaseDevOps示例程序 167 7.1 Java微服务后端程序 168 7.1.1 实验目的和实验环境 168 7.1.2 实验步骤 170 7.2 基于Vue的前端程序 176 7.2.1 实验目的和实验环境 176 7.2.2 实验步骤 176 本章小结 179 第8章 DaseDevOps测试用例 180 8.1 静态代码扫描 181 8.1.1 实验目的和实验环境 181 8.2.2 实验步骤 181 8.2 单元测试 182 8.2.1 实验目的和实验环境 183 8.2.2 实验步骤 183 8.3 用户界面测试用例 190 8.3.1 实验目的和实验环境 191 8.3.2 实验步骤 191 8.4 接口测试用例 198 8.4.1 实验目的和实验环境 198 8.4.2 实验步骤 199 8.5 压力测试用例 204 8.5.1 实验目的和实验环境 206 8.5.2 实验步骤 206 本章小结 211 第9章 CI/CD实践 212 9.1 基于JihuLab的CI/CD 213 9.1.1 实验目的和实验环境 214 9.1.2 实验步骤 214 9.2 基于GitHub的CI/CD 220 9.2.1 实验目的和实验环境 222 9.2.2 实验步骤 222 9.3 基于Jenkins的CI/CD 231 9.3.1 实验目的和实验环境 232 9.3.2 实验步骤 232 9.4 基于JihuLab+Argo的CI/CD 242 9.4.1 实验目的和实验环境 243 9.4.2 实验步骤 244 本章小结 254 第10章 发布平台监控与日志实践 255 10.1 监控系统实践 256 10.1.1 实验目的和实验环境 256 10.1.2 实验步骤 256 10.2 日志系统实践 268 10.2.1 实验目的和实验环境 268 10.2.2 实验步骤 268 本章小结 270