科技>计算机>网络与互联网
企业级DevOps技术与工具实战

企业级DevOps技术与工具实战"

作者:刘淼,张笑梅
ISBN:9787121372469
定价:¥99.0
字数:667千字
页数:468
出版时间:2020-01
开本:16开
版次:01-01
装帧:
出版社:电子工业出版社
简介

本书系统全面地介绍了DevOps 的现状趋势、基础理论和实践方法,对DevOps 实践中的架构设计、开发、测试、部署等各阶段所需践行的原则和方法进行了总结,并提出相关建议。以实战为中心,对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 类,每类工具中至少选择了一种进行重点介绍。因为我个人的精力和知识水平有限,所以书中难免有疏漏、错误的地方,还望发现问题的读者给予指正,大家可发送问题至邮箱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

作者简介

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个