第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