企业级DevOps技术与工具实战
  • 推荐0
  • 收藏0
  • 浏览815

企业级DevOps技术与工具实战

刘淼 , 张笑梅 (作者)  付睿 (责任编辑)

  • 书  号:978-7-121-37246-9
  • 出版日期:2020-01-01
  • 页  数:
  • 开  本:
  • 出版状态:上市销售
  • 维护人:付睿
本书包含DevOps理论的介绍,深入浅出地解析了DevOps体系所包括的Agile/Lean/ITSM/TPS各种方法的精粹和脉络,为DevOps爱好者提供了较为完整的知识体系梳理。同时,聚焦于DevOps企业的落地实施,从文化到组织变革的最佳实践、规范性指导和实践参考都有涉及。DevOps工具自动化是落地实施的保障,本书将提供详细的流水线搭建过程的步骤,搭建持续集成、持续部署流水线常见的思路和设计模式、开源及流行工具选型的原则和方式,同时介绍多种工具包括Jenkins、Sonarqube、Gitlab、Redmine、Docker、Kubernetes的使用方法和集成方式,并介绍了DevOps实践中容器化或者传统方式从设计到部署各阶段需要注意的事项,以指导企业全方位地进行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 因此受到越来越多的关注。在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 类,每类工具中至少选择了一种进行重点介绍。因为我个人的精力和知识水平有限,所以书中难免有疏漏、错误的地方,还望发现问题的读者给予指正,大家可发送问题至邮箱liumiaocn@outlook.com。另外,我会在个人的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

读者评论

相关图书

Terraform:多云、混合云环境下实现基础设施即代码(第2版)

Yevgeniy Brikman ( (作者) 白宇 (译者)

Terraform工具已经成为DevOps领域的关键角色。在各种云平台和虚拟化环境(如AWS、Goolge Cloud、Azure等)中,可以对基础设施即代码(...

¥108.00

DevOps安全:云安全服务

Julien Vehent (作者) 覃宇 (译者)

本书主要介绍了 DevOps 实践中最容易被忽视的一环——安全,并且对云原生服务的安全保障也做了全面的阐述。书中详细介绍了 Web 攻击防范、权限验证、日志监控...

¥108.00

SRE生存指南:系统中断响应与正常运行时间最大化

Nat Welch (作者) 冯文辉 冯文辉 (译者)

站点可靠性工程(Site Reliability Engineering,简称SRE)是一个令人兴奋的新兴领域,它专注于如何确保系统稳定、可靠地运行。本书基于一...

 

Zabbix企业级分布式监控系统(第2版)

吴兆松 (作者)

本书基于稳定版本Zabbix 4.0,对Zabbix的各项功能进行了详细而深入的讲解,包括监控系统规划、安装包定制、架构高可用、性能调优、指标数据采集、自动化处...

 

Nginx实战:基于Lua语言的配置、开发与架构详解

王力 王力 (作者)

本书主要讲解了Nginx在反向代理和应用开发中的作用,阅读本书可以了解Nginx在互联网开发中扮演的多个角色,充分利用这些角色的各项功能有助于提升服务的整体性能...

¥47.40

容器云运维实战——Docker与Kubernetes集群

黄靖钧 (作者)

本书围绕当前容器云运维的主流框架:Docker、Kubernetes详细介绍了容器云运维的实战技巧,在内容上分为三大部分:第一部分(第1~2章)介绍了在Linu...

¥53.40