猜你喜欢
企业级DevOps技术与工具实战

企业级DevOps技术与工具实战

书籍作者:刘淼 张笑梅 编著 ISBN:9787121372469
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:1479
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

本书系统全面地介绍了DevOps 的现状趋势、基础理论和实践方法,对DevOps 实践中的架构设计、开发、测试、部署等各阶段所需践行的原则和方法进行了总结,并提出相关建议。以实战为中心,对DevOps实践中的常用工具进行了分类介绍和特性分析,并结合相关示例进行了使用说明和演示。


作者简介

刘淼

资深架构师,PMP、OCP、CSM、HPE University讲师,EXIN DevOps Professional与DevOps Master认证讲师,曾担任HPE GD China DevOps & Agile Leader,帮助企业级客户提供DevOps咨询培训以及实施指导。熟悉通信和金融领域,有超过10年金融外汇行业的架构设计、开发、维护经验,在十几年的IT从业生涯中拥有了软件开发设计领域接近全生命周期的经验和知识积累。CSDN博客专家,博客地址为https://liumiaocn.blog.csdn.net/。


张笑梅

IT从业15年,其中含5年欧美外包经验,10多年国内行业咨询服务与解决方案经验,涉及电信、金融、航空等领域。先后服务于HPE、惠普、毕博等公司,曾负责过大中型项目实施开发与管理工作,担任过产品经理、咨询顾问、培训讲师及教练等职位。目前致力于项目和组织的敏捷与DevOps转型实施和培训。EXIN Agile Master、DevOps Professional、Lean IT、VeriSM、TSP、PSP模型认证讲师,凤凰沙盘/火星沙盘教练,CMMI 2.0 评估员,ISO 9K内审员,拥有CSM、SAFE、SAFE Advance Master、ITIL、SIGMA GB认证。


编辑推荐
适读人群 :在DevOps实践中需要打通DevOps工具链的读者,负责工具选型或在组织中推行DevOps转型的读者,以及希望对DevOps有较为全面的理解并掌握实践方法的读者,都可以通过本书有所收获。

1 业内专家张乐、赵瞬东倾情作序。

2 本书系统、全面地介绍了企业级DevOps的现状、趋势、基础理论和实践方法,对DevOps实践中的架构设计、开发、测试、部署等各阶段所需要践行的原则和方法进行了总结,并提出了相关建议。

3 本书包含大量企业级DevOps落地实践,将手把手地帮助你从零搭建企业级DevOps工具链体系。

4 学完本书能获得三方面的收获:全面理解DevOps基础理论、能够选择和构建合适的工具链、学习实践的原则和策略。


前言

本书背景

研究人员在对全球各大公司的调研中发现,DevOps 几乎在各个行业都已经有了成功的实践案例,同时越来越多的理论体系和实践经验不断地被融入到DevOps 中,DevOps 因此受到越来越多的关注。在2018 年的DevOps 研究中,有29%的受访者声称正在从事与DevOps 相关的工作,然而DevOps 是什么,到目前为止仍然没有统一、标准的定义,但这并不会阻止企业DevOps实践的脚步。

自2015 年起,我一直在从事与DevOps 相关的咨询、培训、落地实施及其相关的研发工作。由于工作的关系,我认识了付睿编辑,于是产生了将相关内容整理、总结成书的想法。而张笑梅老师在敏捷和精益管理方面有着非常多的实践经验和知识积累,她可以弥补我在这些方面的不足,这也促成了我们共同完成这本书的想法。张笑梅老师将DevOps 基础理论中的很多知识进行了系统的整理与分析。比如,对传统制造业和IT 行业中的浪费比较等方面进行了分析,使我受到很大的启发,相信这也会给读者带来启发。

阅读方式

本书从DevOps 的基础理论、工具种类与集成方式、实践方法与经验、常见理解误区等方面进行组织和展开,对于不同的阶段,建议读者从不同的视角、用不同的方法去阅读本书,从而直入要点、满足所需。希望通过阅读本书,读者可以有以下三个方面的收获。

√ 对DevOps 基础理论的全面理解。

通过对DevOps 发展现状的介绍,读者可以了解当前DevOps 的发展状况。书中结合敏捷和精益管理方面的背景和基础知识,阐述了企业在DevOps 实践中需要注意的事项;还对企业如何构建DevOps 文化,结合相关实例,进行了说明。

√ 选择和构建合适的工具链。

工具及其使用方法介绍是本书的重点,针对软件生命周期的各个阶段,本书列举了常见工具并对其进行了功能特性的分析和介绍,同时选取较为典型的工具进行了更为深入的讲解。虽然与DevOps 相关的工具众多,本书未能一一列举和介绍,但是通过本书对这些常见工具的介绍,相信读者能够窥一斑而知全豹。

在DevOps 工具的实际使用过程中,自动化和集成化是其重要的工作方式,同时也是趋势,因为单个工具所能实现的功能毕竟有限,而将多个工具结合使用可以实现的功能将会极大地增强。本书主要使用自动化集成的方式对工具进行介绍,一般会通过REST API 方式介绍工具的使用方法。在对工具的分析和介绍中也会重点确认此工具是否采用了CLI 或者REST API 集成的方式,因为这样的集成方式是DevOps 实践的重要前提和特征,读者可以根据自己的实际需

要组合使用工具,而不必求全求多,建立合适的工具链才是最重要的。打通工具间的衔接,结合组织的实际状况进行流程的优化,这些才是建立工具链需要重点关注的内容。

√ 实践的原则与策略。

虽然在DevOps 中,工具非常重要,但是DevOps 并不是工具的简单集成,它还包含很多其他内容。比如,工具选型的原则和方法;企业的评估模型,用于对DevOps 的实践状况进行评估,并以此为基础不断改善;整体的安全机制;从设计到测试的各个阶段需要遵循的原则与方法,等等。本书尝试从多个方面来阐述这些内容。

关于示例

容器化在推动DevOps 实践中有着先天优势,在条件允许的情况下,最好以容器化方式对工具进行安装和设定。我们强调环境的一致性,而容器本身就可以保证这一点,这也避免了大部分工具在安装和设定时出现环境不一致的情况。对于没有学习过容器基础知识的读者来说,如果希望快速补充这方面的知识和基本技能,可以先从第19 章开始阅读。第19 章对Docker 和Kubernetes的使用方法进行了介绍,应该会对一些对此部分知识掌握不足而难以进行DevOps 相关工具集成的读者朋友有所帮助。第19 章结合实际的场景,对容器的使用方法进行了介绍,其中大部分相

关脚本和容器化会用到的Dockerfile 都放到了GitHub 的easypack 项目上,其目的是为使用者提供各种工具以使他们快速使用已经完成了安装和部署的脚本或镜像,避免在环境安装方面浪费时间,但是我个人精力有限,在此欢迎读者朋友也能够加入这个项目。

关于勘误

DevOps 在理论上和工具使用上非常复杂,因此,本书讨论的内容非常繁杂,仅工具就列出了13 类,每类工具中至少选择了一种进行重点介绍。因为我个人的精力和知识水平有限,所以书中难免有疏漏、错误的地方,还望发现问题的读者给予指正,大家可发送问题至邮箱[email protected]。另外,我会在个人的CSDN 博客上发布长期置顶的内容勘误帖,欢迎读者朋友指正或参与讨论。

致谢

首先感谢我一生的挚爱——Lynn,她花费了很多时间来对本书中“索然无味”的文字进行校对并查验错别字。本书的大部分内容来源于我的博客,有读书笔记和感悟,也有对项目实践及工具使用技巧的总结,这些内容虽然获得了一定的阅读量,但是有实质性内容的评论不多,这使得我一度认为其中的错别字很少,现在看来完全是读者的“包容”而已。回想起来,对于一个专业的HRBP,Lynn 能够将晦涩难懂的技术文章读下去的唯一动力大概就是对我无私的爱吧。而像付睿和刘建山等多位专业编辑,他们的专业和认真程度也让我折服,在这里请允许我一并谢过,感谢他们的付出。

我和张笑梅老师因DevOps 而相识,我们之间的很多合作都与DevOps 有关,我们曾一起做过相关项目的研发,在2018 年也一起为《DevOps 最佳实践》中文版做过审读。回到本书,张笑梅老师的加入为本书的理论部分增色不少。从初涉DevOps 到现在,我也接触了很多领导和同事,在他们的支持下,我的很多想法才能得到验证和实践,感激之情难以言表。最后,虽然自己尚觉不足,但这本书里还是有很多值得学习的理论基础和实践经验,希望能够带给读者一些触动和启发。

参考文献说明

为了保证参考文献相关链接实时更新,特地将“参考文献”文档放于博文视点官方网站,读者可在http://www.broadview.com.cn/37246 页面下载或通过下面“读者服务”中提供的方式获取。


目录

第1 章 DevOps 概述 1

1.1 什么是DevOps 2

1.2 DevOps 能带来什么 3

1.3 DevOps 的现状 5

1.4 常见的理解误区 10

第2 章 DevOps 基础理论 12

2.1 敏捷理论体系解读 12

2.1.1 敏捷背景介绍 12

2.1.2 三大支柱解读 13

2.1.3 四大核心价值观及解读 14

2.1.4 12 条原则及解读 15

2.1.5 Scrum 敏捷框架 17

2.2 敏捷与DevOps 24

2.3 精益理论体系解读 25

2.3.1 精益产生背景 25

2.3.2 精益IT 及其原则 25

2.4 精益与DevOps 29

2.4.1 节拍 29

2.4.2 交货时间 29

2.4.3 度量指标 29

2.4.4 浪费种类 30

2.4.5 安灯拉绳 31

2.4.6 看板 31

2.4.7 改善 32

2.4.8 挑战与对策 33

2.5 实践案例分析 33

第3 章 构建企业的DevOps 文化 36

3.1 对失败友好的架构与环境 36

3.1.1 对失败友好的架构与环境的特点 37

3.1.2 对失败友好的架构与环境的设计原则 37

3.1.3 当失败遇见复杂系统 40

3.1.4 保障复杂系统的安全 41

3.2 以高度信任为基石的企业文化 42

3.2.1 传统制造业的惩罚文化 43

3.2.2 聚焦改善的免责事后分析 44

3.2.3 多角度的知识与经验分享 45

3.3 持续学习与持续试验 49

3.3.1 通过内部与外部会议促进人员技术成长 50

3.3.2 向生产环境中引入故障来增强弹性 50

3.3.3 持续学习与持续试验的建议 51

3.4 常见的理解误区 52

3.5 实践经验研究 54

第4 章 设计和优化软件全生命周期相关流程 56

4.1 持续评估与DevOps 成熟度模型 56

4.2 持续规划的评估策略 57

4.3 持续集成的策略与原则 58

4.4 持续测试的策略与原则 58

4.5 持续部署的策略与原则 59

4.6 持续监控的策略与原则 59

4.7 持续运维的策略与原则 60

4.8 持续反馈的策略与机制 60

4.9 常见的理解误区和实践经验 60

第5 章 DevOps 实践中的设计与开发 62

5.1 传统架构的痛点 62

5.2 DevOps 中的架构设计 62

5.2.1 康威定律的影响 63

5.2.2 耦合设计原则 64

5.2.3 独立部署原则 66

5.2.4 自动部署策略 66

5.2.5 12 要素 68

5.2.6 应用扩容机制 68

5.3 环境一致性 69

5.3.1 环境一致性的重要性 69

5.3.2 常用工具介绍 69

5.4 版本管理实践 71

5.4.1 版本管理的痛点 71

5.4.2 常用工具介绍 74

5.4.3 实践经验总结 75

5.5 制品管理实践 75

5.6 代码质量分析 77

第6 章 DevOps 实践中的测试 78

6.1 传统测试及其痛点 78

6.2 测试驱动开发 79

6.3 测试分类 81

6.4 测试策略 83

6.4.1 测试团队结构重组策略:测试团队去中心化的应对策略 84

6.4.2 测试促进架构重构策略:根据测试的反馈不断优化系统架构 84

6.4.3 测试团队技能提升策略:逐步推动测试团队知识与技能的重建 84

6.4.4 各阶段测试策略:分阶段使用不同方式保证系统功能 85

6.5 自动化测试 85

6.5.1 自动化测试现状 86

6.5.2 做还是不做:决策因素 86

6.5.3 自动化测试推行策略 88

6.5.4 自动化测试工具选型 89

6.6 实践经验研究 90

6.6.1 常见的实践误区 90

6.6.2 实践案例 91

第7 章 DevOps 实践中的部署 101

7.1 部署方式 101

7.1.1 蓝绿部署 102

7.1.2 金丝雀部署 103

7.2 部署依赖 104

7.2.1 架构的影响 104

7.2.2 基础设施的影响 104

7.3 常用工具 106

7.4 实践经验总结 107

第8 章 DevOps 工具选型:开源与闭源 108

8.1 通用选型指标 108

8.1.1 系统限制要素 109

8.1.2 可用性 109

8.1.3 交互性 110

8.1.4 市场状况 110

8.1.5 功能可裁剪度 111

8.2 开源/闭源选型指标 111

8.2.1 成本 112

8.2.2 更新频度 112

8.2.3 改善速度 113

8.2.4 集成方式 113

8.2.5 文档说明 114

8.3 选型模型介绍 115

8.4 实践经验总结 115

第9 章 DevOps 工具:需求管理与缺陷追踪 117

9.1 常用工具介绍 117

9.1.1 JIRA 117

9.1.2 Redmine 118

9.1.3 Trac 120

9.1.4 Bugzilla 121

9.2 详细介绍:Redmine 121

9.2.1 安装Redmine 121

9.2.2 设定Redmine 125

9.2.3 REST API 操作 130

9.3 需求管理工具选型比较 137

第10 章 DevOps 工具:持续集成 139

10.1 常用工具介绍 139

10.1.1 Jenkins 139

10.1.2 Apache Continuum 140

10.1.3 CruiseControl 141

10.2 详细介绍:Jenkins 141

10.2.1 安装Jenkins 142

10.2.2 设定Jenkins 144

10.3 持续集成实践 146

10.3.1 Jenkins+GitLab 147

10.3.2 Jenkins+Docker 150

10.3.3 Jenkins pipeline 157

第11 章 DevOps 工具:版本管理 169

11.1 常用工具介绍 169

11.1.1 RCS 169

11.1.2 SVN 179

11.1.3 Git 180

11.1.4 GitLab 181

11.2 详细介绍:GitLab 与开发模型 182

11.2.1 Git Flow 分支模型 182

11.2.2 GitLab+Git Flow 185

11.2.3 GitHub Flow 分支模型 200

11.2.4 GitLab+GitHub Flow 201

11.3 实践经验总结 205

第12 章 DevOps 工具:构建工具 208

12.1 常用工具介绍 208

12.1.1 Make 208

12.1.2 Maven 209

12.1.3 Gradle 209

12.1.4 MSBuild 210

12.2 详细介绍:Maven 211

12.2.1 安装Maven 211

12.2.2 Maven 的使用 211

12.3 详细介绍:Gradle 214

12.3.1 安装Gradle 214

12.3.2 Gradle 的使用 214

12.4 实践经验总结 221

第13 章 DevOps 工具:代码质量 223

13.1 常用工具介绍 223

13.1.1 SonarQube 223

13.1.2 Frotify 224

13.1.3 Coverity 225

13.1.4 FindBugs 225

13.2 详细介绍:SonarQube 226

13.2.1 安装SonarQube 226

13.2.2 SonarQube 基础 231

13.2.3 SonarQube 使用方式 239

13.3 代码质量检测实践 244

13.3.1 代码扫描与概要信息获取 245

13.3.2 指标信息的获取 249

13.3.3 测试指标与事前准备 259

13.3.4 测试指标实践 261

13.3.5 项目与质量规约管理 272

第14 章 DevOps 工具:运维自动化 277

14.1 常用工具介绍 277

14.1.1 Ansible 277

14.1.2 Chef 277

14.1.3 Puppet 278

14.1.4 Saltstack 279

14.2 常用工具的使用 279

14.2.1 Ansible 的安装与使用 279

14.2.2 Chef 的安装与使用 280

14.2.3 Puppet 的安装与使用 287

14.2.4 Saltstack 的安装与使用 289

第15 章 DevOps 工具:测试自动化 292

15.1 常用工具介绍 292

15.1.1 xUnit 292

15.1.2 Selenium 293

15.1.3 Apache JMeter 293

15.1.4 Robot Framework 293

15.2 详细介绍:Robot Framework 294

15.2.1 准备Python 294

15.2.2 安装PIP 294

15.2.3 安装Robot Framework 295

15.3 自动化测试工具的使用 296

15.3.1 使用Robot Framework 进行测试 296

15.3.2 使用Selenium 进行测试 300

第16 章 DevOps 工具:日志监控 303

16.1 常用工具介绍 303

16.1.1 ELK 303

16.1.2 Splunk 306

16.1.3 Hygieia 308

16.2 详细介绍:Hygieia 311

16.2.1 安装配置 311

16.2.2 Hygieia 服务的启动方式和说明 312

16.2.3 使用说明 314

16.3 实践经验总结 315

第17 章 DevOps 工具:运维监控 316

17.1 常用工具介绍 316

17.1.1 Zabbix 316

17.1.2 Nagios 319

17.1.3 Grafana 323

17.1.4 InfluxDB 325

17.2 详细介绍:InfluxDB 326

17.3 实践中的注意事项及原则 330

第18 章 DevOps 工具:安全监控 331

18.1 常用工具介绍 331

18.1.1 Clair 331

18.1.2 Anchore 336

18.1.3 ClamAV 339

18.2 详细介绍:安全扫描 344

18.2.1 Clair 镜像安全扫描 344

18.2.2 Anchore 镜像扫描 348

18.2.3 ClamAV 病毒扫描 349

18.3 实践经验总结 350

第19 章 DevOps 工具:容器化 352

19.1 常用工具介绍 352

19.1.1 Docker 352

19.1.2 docker-compose 356

19.1.3 Kubernetes 357

19.2 详细介绍:Docker 357

19.2.1 问题诊断 357

19.2.2 镜像操作与容器操作 365

19.2.3 其他操作 381

19.3 详细介绍:Kubernetes 384

19.3.1 管理资源 385

19.3.2 故障排查 390

19.3.3 故障应对 397

第20 章 DevOps 工具:镜像私库 407

20.1 常用工具介绍 407

20.1.1 Registry 407

20.1.2 Harbor 409

20.1.3 Nexus 414

20.2 详细介绍:Harbor 420

第21 章 DevOps 工具:二进制制品管理 422

21.1 常用工具介绍 424

21.1.1 Apache Archiva 424

21.1.2 Artifactory 424

21.2 详细介绍:Nexus 425

21.2.1 环境设定:Maven 私库搭建 425

21.2.2 私库使用:准备与设定Maven 427

21.2.3 私库使用:设定项目的pom 文件 428

21.2.4 私库使用:执行maven 操作 429

21.3 实践经验总结 430

第22 章 DevOps 实践中的安全机制 431

22.1 安全调查现状 431

22.2 设计安全机制的整体策略 432

22.3 与安全工具的融合 436

22.4 持续评估和改善 438

22.5 实践案例分析 439

第23 章 基于微服务和容器化的高可用架构 440

23.1 高可用架构设计 440

23.2 Kubernetes+微服务+DevOps 的实践思路 443

23.2.1 整体原则 443

23.2.2 多层级的高可用性 444

23.2.3 专注于业务开发的微服务 445

23.2.4 保驾护航的DevOps 446


短评

很少能对你说你的不识不知包治百病咱爸南水北调你的**都看在你那张奶奶大男大女大男大女你大男大女大男大女你都能想到你

2020-04-01 11:37:16

非常不错,对主流的工具都有介绍,非常devops的poc很有参照意义!

2020-03-27 21:32:45