编辑推荐
深度解析互联网时代开发运维模式DevOps。每一个想学习DevOps理论与实践的人都应该研读的*一本书。工业界和学术界的一次思想碰撞——实用具体和严谨全面的有机融合。
李兵刘超王青汪浩洪绯王润郭峰徐峰郭蕾吴超英沈海峰黄丽果祝立明联名推荐。
内容简介
本书由南京大学软件学院三位资深教师联合行业一线专家编写而成,系统全面地介绍DevOps——这一互联网时代新型软件开发模式的原理、方法和实践。内容详实、结构清晰、表述浅显易懂,非常适合在校学生学习使用,也可以作为产业界DevOps初学者学习参考。
全书第一部分首先从时代背景出发,介绍DevOps模式的渊源;结合云时代运维的特征,进一步阐明DevOps模式是适应当前软件系统开发、部署和维护的必然选择。第二部分介绍了主流软件开发方法及其流程;作为DevOps的基础理论,精益生产和看板方法是这部分的重点。第三部分则重点阐述了DevOps模式下的典型实践,例如:微服务架构、持续集成、持续交付(部署)、虚拟化、Docker容器、自动化等。
作者简介
荣国平,南京大学软件学院教师,长期从事软件过程改进相关的工作。从2006年开始,多次赴美参加SEI的相关培训,并在当年成为国内唯*的SEI授权PSP培训师和TSP团队教练。在JSS、软件学报等期刊以及包括ICSE、ESEM、ICSSP、EASE、CSEE&T;、APSEC等在内的一流国际会议上发表论文40余篇。DevOps中国技术社区发起人之一。
张贺,南京大学软件工程教授、博士生导师,入选登峰人才计划(A-层次),澳大利亚联邦科学院(CSIRO)主任科学家。在欧洲和澳洲从事软件工程研究与实践十余年,2013年起就职于南京大学。长期从事软件过程、软件体系结构、服务计算、经验软件工程领域的科研和实践。负责主持爱尔兰(欧盟)、澳大利亚、中国等多个国家*科研基金项目。著有英文专著两部,并在国际重要软件工程学术期刊和会议上发表论文百余篇,其中10篇会议长文获*佳论文奖。
邵栋,南京大学软件学院副教授,嵌入式技术系主任,软件学院院长助理。主要从事软件工程教学研究工作,研究方向为软件过程、高科技市场理论、敏捷软件开发、软件工程教育等。2005、2009、2014年三次获得教育部颁发的“国家*教学成果奖二等奖”,是国家*教学团队“软件工程主干课程教学团队”骨干成员,编写教材一部,担任国家精品课程“计算与软件工程”主讲教师,两次获得“南京大学我*喜爱的老师”称号。
精彩书评
本书是目前国内(也可能是国际范围内)第*本DevOps的系统性教材,作者以云计算、微服务等新兴领域为研究载体,聚焦其中的前言问题与关键技术,结合DevOps的应用开发案例与工具集,深入浅出、娓娓道来,是一本不可多得的软件工程教材。
——李兵,武汉大学国际软件学院副院长
本书全面地介绍了DevOps的由来和发展,遵循的基本原则,相关的理论基础,推荐的有效方法和实践,以及支持平台和工具,为在校学生和企业开发与运维相关人员提供了一本内容丰富、易读易懂的教材。
——刘超,北京航空航天大学软件工程研究所所长
本书梳理了DevOps的发展历史和基本概念,并给出了一些技术和实践的方法,为初学者提供了很好的指导!
——王青教授,中国科学院软件研究所
本书从理论、技术、工具、方法及实践等多个角度对DevOps进行了全面诠释,在内容上引入了多个组织采用Devops的成功案例,凝结了作者和众多行业专家多年的实践积累与思想结晶。
——汪浩,中金云金融(北京)大数据科技股份有限公司研发总监
本书深入浅出地剖析了DevOps模式如何具体应用到产品研发中,当我们面对日益复杂的业务场景和技术发展时,能提供更为高效的方法和策略提升综合竞争力。
——洪绯,阿里巴巴土豆视频产品研发副总裁
本书全面且深入浅出地介绍、阐述并探讨了DevOps本身及其运用的重要维度和方面,特别就DevOps的初学者学习理论基础而言大有裨益。
——王润,普华永道合伙人
本书详细阐述了DevOps背后的软件交付理论体系,并结合当下热门的微服务架构设计和容器技术,带领读者领略了前沿的交付设计和实践探索。
——郭峰,DaoCloud联合创始人兼首席技术官
本书为大家清晰讲述了DevOps理念发展的历程,以及DevOps和敏捷、精益之间的联系,以实践项目的方式将软件架构、研发模式和研发工具结合起来,是一部非常值得大家去深入学习、探讨的DevOps教程。
——徐峰,华为软件开发云CTO
InfoQ在很早之前就向社区普及推广DevOps相关的实践,我们坚信DevOps将会对软件开发产生深远影响。本书是国内为数不多的系统讲解DevOps技术的书籍,推荐阅读。
——郭蕾,InfoQ总编辑
目录
赞誉
序
前言
第1章 DevOps概述 …… 1
1.1 互联网时代的转型挑战 …… 1
1.2 独角兽公司 …… 4
1.2.1 Netflix公司 …… 4
1.2.2 Instagram …… 8
1.2.3 成功秘诀 …… 9
1.3 什么是DevOps …… 10
1.3.1 发展渊源 …… 10
1.3.2 价值观 …… 12
1.3.3 原则 …… 13
1.3.4 方法 …… 15
1.3.5 实践 …… 16
1.3.6 工具 …… 16
1.4 DevOps应用与研究现状 …… 17
1.4.1 微服务 …… 17
1.4.2 持续集成和持续交付 …… 19
1.4.3 工具研究和开发 …… 21
本章小结 …… 23
思考题 …… 23
参考文献 …… 23
第2章 云时代的运维 …… 26
2.1 云计算概述 …… 26
2.1.1 IaaS …… 26
2.1.2 PaaS …… 28
2.1.3 SaaS …… 29
2.1.4 XaaS …… 30
2.2 IT服务标准介绍 …… 30
2.2.1 CMMI-SVC …… 30
2.2.2 ITIL …… 33
2.2.3 ISO20000 …… 33
2.2.4 ITSS …… 36
2.3 什么是运维 …… 39
2.3.1 运维的价值 …… 39
2.3.2 运维的技术与技能 …… 40
2.3.3 传统运维的转型之路 …… 40
本章小结 …… 41
思考题 …… 41
参考文献 …… 42
第3章 软件架构演进 …… 44
3.1 软件架构概述 …… 44
3.1.1 什么是软件架构 …… 44
3.1.2 软件架构的目标 …… 46
3.1.3 软件架构的不同视角 …… 46
3.2 软件架构的演进 …… 51
3.2.1 传统软件架构的演进 …… 51
3.2.2 流量爆炸时代的大型互联网软件架构 …… 54
3.2.3 互联网软件架构演进实例 …… 60
本章小结 …… 66
思考题 …… 67
参考文献 …… 67
更多阅读 …… 67
第4章 软件开发过程和方法 …… 68
4.1 软件过程概述 …… 68
4.1.1 软件开发方法发展历史 …… 69
4.1.2 软件过程的多维视角 …… 77
4.2 个体过程和实践 …… 79
4.2.1 PSP过程基本原则 …… 80
4.2.2 PSP过程度量 …… 81
4.2.3 PROBE估算原理 …… 82
4.2.4 PROBE估算流程 …… 83
4.2.5 通用计划框架 …… 85
4.2.6 PSP质量与质量策略 …… 87
4.2.7 评审与测试 …… 88
4.2.8 评审过程质量 …… 89
4.2.9 设计与质量 …… 98
4.2.10 设计过程 …… 100
4.2.11 设计的层次 …… 101
4.3 小组过程和实践 …… 102
4.3.1 XP实践 …… 102
4.3.2 Scrum方法 …… 105
4.3.3 TSP过程 …… 106
4.4 软件过程改进 …… 108
4.4.1 元模型 …… 108
4.4.2 过程改进参考模型与标准 …… 112
4.5 DevOps中的开发过程和方法 …… 121
本章小结 …… 121
思考题 …… 121
参考文献 …… 122
第5章 精益思想和看板方法 …… 124
5.1 从精益思想说起 …… 124
5.1.1 精益起源于丰田 …… 124
5.1.2 精益实践的传播 …… 124
5.1.3 精益作为方法学开始超越生产制造 …… 126
5.1.4 上升至精益的价值观 …… 126
5.2 精益的三个层面 …… 128
5.3 精益产品开发实践体系 …… 129
5.3.1 精益产品开发的目标 …… 129
5.3.2 精益产品开发的原则 …… 130
5.3.3 精益产品开发的运作实践 …… 131
5.4 看板方法的起源 …… 132
5.4.1 看板的中文意思带来误解 …… 132
5.4.2 看板是精益制造系统的核心工具 …… 133
5.4.3 看板形成拉式生产方式 …… 135
5.5 什么是产品开发中的看板方法 …… 136
5.5.1 产品开发中的看板方法的诞生 …… 136
5.5.2 看板方法的第一组实践—建立看板系统的3个实践 …… 136
5.5.3 看板方法的第二组实践—运作看板系统的2个实践 …… 140
本章小结 …… 142
思考题 …… 142
参考文献 …… 143
第6章 微服务软件架构 …… 144
6.1 软件架构的发展 …… 144
6.1.1 单体架构 …… 144
6.1.2 分层架构 …… 144
6.1.3 SOA架构 …… 146
6.1.4 分布式架构 …… 148
6.2 现代应用的12范式 …… 150
6.3 什么是微服务架构 …… 150
6.4 微服务架构的特征 …… 151
6.4.1 通过服务组件化 …… 152
6.4.2 围绕业务能力组织 …… 152
6.4.3 是产品不是项目 …… 153
6.4.4 智能端点和哑管道 …… 153
6.4.5 去中心化治理 …… 154
6.4.6 去中心化数据管理 …… 154
6.4.7 基础设施自动化 …… 155
6.4.8 为失效设计 …… 155
6.4.9 进化式设计 …… 155
6.5 微服务核心模式 …… 156
6.5.1 服务注册与发现 …… 156
6.5.2 配置中心 …… 157
6.5.3 API网关 …… 157
6.5.4 熔断器 …… 158
6.5.5 分布式追踪 …… 160
本章小结 …… 161
思考题 …… 162
参考文献 …… 162
第7章 容器技术基础 …… 163
7.1 内核基础 …… 163
7.1.1 Linux namespace …… 164
7.1.2 Linux CGroup …… 168
7.2 Docker架构概览 …… 169
7.2.1 Client …… 170
7.2.2 Docker Daemon …… 171
7.2.3 Docker Registry …… 172
7.2.4 Graph …… 173
7.2.5 Driver …… 173
7.2.6 libcontainer …… 173
7.3 镜像管理 …… 174
7.3.1 什么是Docker镜像 …… 174
7.3.2 Dockerfile、Docker镜像和Docker容器的关系 …… 174
7.3.3 Dockerfile …… 176
7.4 Docker网络管理 …… 178
7.4.1 Docker网络模式 …… 178
7.4.2 libnetwork和Docker网络 …… 179
7.4.3 Docker的内置Overlay网络 …… 180
7.5 Docker存储 …… 181
7.5.1 Docker存储驱动 …… 181
7.5.2 Docker驱动比较 …… 182
7.6 Docker编排 …… 183
7.6.1 Docker Swarm …… 183
7.6.2 Kubernetes …… 185
本章小结 …… 186
思考题 …… 186
参考文献 …… 187
第8章 基于容器技术的DevOps实践 …… 188
8.1 概述 …… 188
8.2 代码管理 …… 188
8.2.1 Git介绍 …… 190
8.2.2 Git工作流程 …… 191
8.3 持续交付流水线 …… 194
8.3.1 预备步骤 …… 194
8.3.2 实现持续交付流水线 …… 199
8.3.3 持续交付最佳实践 …… 201
8.3.4 检查列表 …… 204
8.4 持续集成工具 …… 205
8.4.1 传统的CI工具 …… 205
8.4.2 云计算环境中的CI工具 …… 206
8.4.3 用于移动应用的CI工具 …… 206
8.4.4 使用Docker的CI工具 …… 207
8.5 Java应用持续交付实践举例 …… 207
8.5.1 持续集成 …… 207
8.5.2 持续部署 …… 209
8.5.3 版本管理 …… 211
本章小结 …… 212
思考题 …… 212
参考文献 …… 212
第9章 DevOps工具集 …… 214
9.1 概述 …… 214
9.2 协同开发工具 …… 215
9.2.1 JIRA …… 215
9.2.2 Kanboard …… 216
9.2.3 Rally …… 218
9.3 持续集成工具 …… 219
9.3.1 Jenkins …… 219
9.3.2 Bamboo …… 220
9.3.3 Travis CI …… 220
9.4 版本管理工具 …… 221
9.4.1 Git …… 221
9.4.2 GitHub …… 223
9.4.3 GitLab …… 223
9.4.4 Subversion …… 223
9.4.5 Mercurial …… 223
9.5 编译工具 …… 224
9.5.1 Ant …… 224
9.5.2 Maven …… 225
9.5.3 Gradle …… 226
9.5.4 MSBuild …… 226
9.6 配置管理工具 …… 227
9.6.1 Chef …… 227
9.6.2 Puppet …… 228
9.6.3 Ansible …… 228
9.7 测试工具 …… 228
9.7.1 JUnit …… 228
9.7.2 Selenium …… 229
9.7.3 Cucumber …… 229
9.7.4 FitNesse …… 230
9.8 监控工具 …… 231
9.8.1 Nagios …… 231
9.8.2 Zabbix …… 231
9.9 工具网址 …… 232
前言/序言
近年来DevOps开发模式对软件产业产生了深远影响,相当多的软件企业开始采用这种新的模式。来自权威机构的预测报告甚至认为,未来全球排名前2000的软件企业中,超过80%都将转向DevOps模式。事实上,DevOps发展速度之快和影响范围之广都大大超出了人们的预期。
DevOps之所以会产生如此巨大的影响,我们认为这不是偶然的。这种方法本身具有的特性非常适合在需求很难确定、快速响应变更、快速提供价值和高可靠性要求这样的所谓互联网时代软件环境中得到应用。由此,作为软件工程教育者,我们不得不思考DevOps给现代软件工程教育所带来的影响。一方面,我们的教育本身就需要教会学生把经过实践检验的优秀管理方法和适用的具体开发技术相结合,应用过程化思想和系统化的方法去开发和维护各类软件系统。从这个意义上说,DevOps是满足上述目标的极好载体。因此,忽视DevOps,不仅仅会错过一个实现软件工程教育目的的好机会,更为糟糕的是,可能会由此扩大学校教育和业界实际实践之间的差距。另一方面,将DevOps引入大学课堂,也面临着诸多挑战。首要的就是目前尚缺一本专门以DevOps为主题,全面系统地涵盖DevOps各个方面的教材。有鉴于此,我们编著了这样一本教材,试图弥补这一缺憾。
考虑到本书主要面向DevOps的初学者,因此,在内容的选择和组织上,我们并没有一味罗列DevOps的流行词汇和工具,而是尽可能把DevOps方法背后的理论基础解释清楚。对于具有典型DevOps特征的软件工程技术和实践,例如微服务架构演进、精益管理、容器技术等,我们则不吝笔墨地大篇幅介绍。由此,我们试图传递出一个概念,即DevOps作为一种方法学,不能简单等同于某类实践或者工具,而是涵盖管理的基础理论、技术以及工具的有机整体。综合起来,本书具有如下特点:
全面系统地覆盖DevOps的各个方面,便于读者以此书作为DevOps的基础(尽管内容并不基础!)入门书籍。
保持客观、中立和审慎的态度。尽管我们推崇DevOps,但绝不盲从。在材料的组织和内容表述方面,我们以解决实际问题为导向来介绍DevOps。同时,我们也清晰表达观点—DevOps并不抗拒其他方法学。
部分知识点和相应的案例直接来源于一线业界专家的工作经历,可以增强读者的代入感,同时,也有助于读者更好地理解DevOps。
本书具体分工如下:第1章由王天青、邵栋、张贺以及任群合作编写;第2章由腾灵灵和宋骏合作编写;第3章由蒋孟杰编写;第4章由荣国平编写;第5章由何勉编写;第6~8章由王天青编写;第9章由吴昊编写。此外,荣国平、张贺和邵栋对全书进行统稿和润色。由于时间仓促,再加上编者的水平所限,书中难免有错误与不妥之处,恳请读者指正和赐教。
荣国平
2017年7月于南大北园
DevOps:原理、方法与实践 epub pdf mobi txt 电子书 下载 2024
DevOps:原理、方法与实践 下载 epub mobi pdf txt 电子书 2024