书籍详情
持续交付2.0 业务引领的DevOps精要(增订本)
作者:乔梁 著
出版社:人民邮电出版社
出版时间:2022-02-01
ISBN:9787115577399
定价:¥99.90
购买这本书可以去
内容简介
本书“重新定义”了持续交付,增补了组织管理和架构两个维度,辅助以真实案例,对持续交付的诸多原则和实践加以解读,并对持续交付过程中的取舍原则加以论述。本书分为3个部分:第一部分作者根据自己近十年的工作及咨询经历,通过不断总结、提炼和反思,对原有的持续交付进行修正,重新定义持续交付为实现组织战略目标的能力,并引入持续交付的能力模型;第二部分阐述组织打造持续交付能力模型所需遵循的原则,包括基础原则、组织原则和架构原则;第三部分通过对多个互联网公司案例的解读,阐述如何根据组织的当前状况应用相关原则对最佳实践进行取舍,并快速达到组织能力目标。本书适合大型互联网公司的技术VP、技术负责人,中小型互联网公司的CTO、技术VP、研发/测试/运维负责人、主管及骨干,以及组织变革者阅读。
作者简介
敏思特咨询公司联合创始人,腾讯外聘高级管理顾问,DevOps领域***导师之一,持续交付双环理论创始人,指导过很多大型软件公司解决组织转型与研发管理方面的相关问题。国内最早致力于通过敏捷开发与精益理论提升软件价值交付效率的实践者之一,精研各种软件工程方法论,2010年翻译《持续交付》一书,并结合8年实践将工作心得整理成《持续交付2.0:业务引领的DevOps精要》。十多年来,受邀参加各种大型技术会议(如QCon、AgileChina、DevOpsDays、MSTC等)并发表演讲。读者可访问本书配套网站www.continuousdelivery20.com,持续获得作者的**分享,并参与互动和交流。
目录
目录
第 1章 持续交付2.0\t1
1.1 软件工程发展概述\t1
1.1.1 瀑布软件开发方法\t1
1.1.2 敏捷软件开发方法\t2
1.1.3 DevOps运动\t3
1.1.4 持续交付1.0\t4
1.2 持续交付2.0\t7
1.2.1 精益思想\t8
1.2.2 双环模型\t9
1.2.3 4个核心原则\t11
1.2.4 持续交付七巧板\t12
1.3 小结\t13
第 2章 价值探索环\t14
2.1 探索环的意义\t14
2.2 探索环的4个关键环节\t15
2.2.1 提问\t16
2.2.2 锚定\t17
2.2.3 共创\t19
2.2.4 精炼\t22
2.3 工作原则\t24
2.3.1 分解并快速试错\t24
2.3.2 一次只验证一点\t25
2.3.3 允许失败\t26
2.4 共创与精炼的常用方法\t27
2.4.1 装饰窗方法\t27
2.4.2 最小可行特性法\t29
2.4.3 特区法\t30
2.4.4 定向探索法\t30
2.4.5 稻草人法\t31
2.4.6 最小可行产品法\t32
2.5 实施注意事项\t32
2.6 小结\t35
第3章 快速验证环\t36
3.1 验证环的目标\t36
3.2 验证环的4个关键环节\t37
3.2.1 构建\t37
3.2.2 运行\t38
3.2.3 监测\t39
3.2.4 决策\t39
3.3 工作原则\t39
3.3.1 质量内建\t39
3.3.2 消除等待\t40
3.3.3 重复事务自动化\t43
3.3.4 监测一切\t43
3.4 小结\t44
第4章 持续交付2.0的组织文化\t45
4.1 安全、信任与持续改善\t45
4.1.1 失败是安全的\t45
4.1.2 相互信任\t45
4.1.3 持续改善\t46
4.2 文化塑造四步法\t46
4.2.1 行为决定文化\t46
4.2.2 谷歌的工程师质量文化\t48
4.2.3 Etsy的持续试验文化\t49
4.3 行动原则\t50
4.3.1 价值导向\t51
4.3.2 快速验证\t51
4.3.3 持续学习\t51
4.4 度量原则\t55
4.4.1 度量指标的4类属性\t56
4.4.2 度量的目标是改善\t57
4.4.3 古德哈特定律\t57
4.4.4 度量应有行动决策\t58
4.5 “改善套路”进行持续改进\t58
4.6 小结\t59
第5章 持续交付的软件系统架构\t60
5.1 “大系统小做”原则\t61
5.1.1 持续交付架构要求\t61
5.1.2 系统拆分原则\t61
5.2 常见架构模式\t62
5.2.1 微核架构\t62
5.2.2 微服务架构\t63
5.2.3 巨石应用\t64
5.3 架构改造实施模式\t66
5.3.1 拆迁者模式\t67
5.3.2 绞杀者模式\t68
5.3.3 修缮者模式\t68
5.3.4 数据库的拆分方法\t70
5.4 小结\t70
第6章 业务需求协作管理\t72
6.1 产品版本周期概述\t73
6.1.1 准备期\t73
6.1.2 交付期\t74
6.2 需求拆分的利与弊\t75
6.2.1 需求拆分的收益\t76
6.2.2 需求拆分的成本\t78
6.3 需求拆分方法\t79
6.3.1 需求的来源\t80
6.3.2 技术债也是需求\t80
6.3.3 参与需求拆分的角色\t81
6.3.4 不平等的INVEST原则\t82
6.3.5 五大拆分技法\t82
6.3.6 七大组成部分\t84
6.4 需求分析与管理工具集\t85
6.4.1 用户故事地图\t85
6.4.2 用户故事树\t86
6.4.3 依赖关系图\t87
6.4.4 需求管理数字化平台\t87
6.5 团队协作管理工具\t87
6.5.1 团队共享日历\t88
6.5.2 团队回顾\t89
6.5.3 可视化故事墙\t90
6.5.4 明确“完成”的定义\t90
6.5.5 持续集成\t91
6.5.6 故事验证\t91
6.6 小结\t91
第7章 部署流水线原则与工具设计\t92
7.1 简单的部署流水线\t92
7.1.1 简单的产品研发流程\t92
7.1.2 初始部署流水线\t93
7.1.3 流水线执行状态解析\t95
7.2 部署流水线的设计与使用\t95
7.2.1 流水线的设计原则\t95
7.2.2 团队的协作纪律\t97
7.3 部署流水线平台的构成\t97
7.3.1 工具链总体架构\t97
7.3.2 平台应当具备的基本
能力\t99
7.3.3 工具链建设策略\t100
7.4 基础支撑服务的云化\t100
7.4.1 基础支撑服务的协作过程解析\t101
7.4.2 编译构建管理服务\t103
7.4.3 自动化测试管理服务\t104
7.4.4 软件部署管理服务\t105
7.4.5 基础环境管理服务\t106
7.5 企业制品库的管理\t107
7.5.1 制品库的分类\t107
7.5.2 制品库的管理原则\t108
7.6 多种多样的部署流水线\t108
7.6.1 多组件的部署流水线\t108
7.6.2 个人部署流水线\t109
7.6.3 部署流水线的不断演进\t110
7.7 为开发者构建自助式工具\t111
7.8 小结\t113
第8章 利于集成的分支策略\t114
8.1 版本控制系统的使用目的\t114
8.1.1 集中式版本控制系统\t114
8.1.2 分布式版本控制系统\t115
8.1.3 版本控制系统中的基本概念\t117
8.2 常见分支开发模式\t118
8.2.1 主干开发,主干发布\t118
8.2.2 主干开发,分支发布\t119
8.2.3 分支开发,主干发布\t121
8.3 分支模式的演化\t126
8.3.1 “三驾马车”分支模式\t126
8.3.2 Gitflow分支模式\t127
8.3.3 GitHubFlow分支模式\t128
8.4 分支策略的选择\t128
8.4.1 版本发布模式\t128
8.4.2 分支策略与发布周期的关系\t132
8.5 小结\t133
第9章 持续集成\t134
9.1 起源与定义\t134
9.1.1 原始定义\t135
9.1.2 一次集成过程\t135
9.2 六步提交法\t136
9.2.1 4个关键点\t138
9.2.2 同步与异步模式\t139
9.2.3 自查表\t140
9.3 速度与质量的权衡\t141
9.3.1 分级构建\t141
9.3.2 多人同时提交的构建\t142
9.3.3 云平台的威力\t143
9.4 在团队中实施持续集成实践\t145
9.4.1 快速建立团队的持续集成实践\t145
9.4.2 分支策略与部署流水线\t148
9.5 常见的实施问题\t150
9.5.1 工程师的开发习惯\t151
9.5.2 视而不见的扫描问题\t151
9.5.3 自动化测试用例的缺乏\t151
9.6 小结\t152
第 10章 自动化测试策略与方法\t153
10.1 自动化测试的自身定位\t153
10.1.1 自动化测试的优势\t154
10.1.2 自动化测试所需的 投入\t155
10.2 突破传统自动化测试的困境\t156
10.2.1 传统自动化测试的特点\t157
10.2.2 自动化测试的分层\t157
10.2.3 不同类型的测试金字塔\t160
10.3 自动化测试的实施策略\t163
10.3.1 增加自动化测试用例的着手点\t163
10.3.2 提高自动化测试的执行次数\t164
10.3.3 良好自动化测试的特征\t165
10.3.4 共享自动化测试的维护职责\t166
10.3.5 代码测试覆盖率\t167
10.4 用户验收自动化测试要点\t168
10.4.1 先搭建分层框架\t168
10.4.2 测试用例数应保持低位\t171
10.4.3 为自动化测试用例预留API\t171
10.4.4 为调试做好准备\t171
10.4.5 测试数据的准备\t171
10.5 其他质量检查方法\t173
10.5.1 差异批准测试方法\t173
10.5.2 代码规范检查与代码动静态检测\t174
10.5.3 AI在测试领域的应用\t174
10.6 小结\t175
第 11章 软件配置管理\t176
11.1 将一切纳入软件配置管理\t176
11.1.1 软件配置管理的目标\t176
11.1.2 软件配置管理的范围\t177
11.1.3 软件配置管理的原则\t177
11.2 软件包的版本管理\t181
11.2.1 包管理的反模式\t181
11.2.2 集中式包管理服务\t182
11.2.3 软件包的元信息\t183
11.3 包依赖管理\t185
11.3.1 显式声明依赖\t185
11.3.2 自动管理依赖\t187
11.3.3 减少复杂依赖\t188
11.4 环境基础设施管理\t191
11.4.1 环境准备的4种状态\t191
11.4.2 领域专属语言的应用\t197
11.4.3 环境基础设施即代码\t198
11.5 软件配置项的管理\t199
11.5.1 二进制与配置项的分离\t199
11.5.2 配置信息的版本管理\t200
11.5.3 配置项的存储组织方式\t201
11.5.4 配置漂移与治理\t202
11.6 不可变基础设施与云应用\t203
11.6.1 实现不可变基础设施\t203
11.6.2 云原生应用\t206
11.6.3 优势与挑战\t206
11.7 数据的版本管理\t208
11.7.1 数据库结构变更\t208
11.7.2 数据文件\t208
11.8 需求与源代码的版本关联\t209
11.9 小结\t209
第 12章 低风险发布\t211
12.1 高频发布是一种趋势\t211
12.1.1 互联网企业的高频发布\t212
12.1.2 收益与成本共存\t214
12.2 降低发布风险的方法\t215
12.2.1 蓝绿部署\t215
12.2.2 滚动部署\t216
12.2.3 金丝雀发布与灰度发布\t217
12.2.4 暗部署\t218
12.3 高频发布支撑技术\t219
12.3.1 功能开关技术\t220
12.3.2 数据迁移技术\t222
12.3.3 抽象分支方法\t225
12.3.4 升级替代回滚\t226
12.4 影响发布频率的因素\t227
12.5 小结\t228
第 13章 监测与决策\t229
13.1 生产监测范围\t230
13.1.1 后台服务的监测\t230
13.1.2 分发软件的监测\t230
13.2 数据监测体系\t231
13.2.1 收集与处理\t231
13.2.2 数据的标准化\t232
13.2.3 监测数据体系及其能力衡量\t233
13.3 问题处理体系\t235
13.3.1 告警海洋与智能化管理\t235
13.3.2 问题处理是一个学习过程\t236
13.4 生产环境测试\t237
13.4.1 测试活动扁平化趋势\t237
13.4.2 生产环境中的测试\t239
13.4.3 混沌工程\t239
13.5 向东,还是向西\t240
13.6 小结\t241
第 14章 大型互联网团队的FT化\t242
14.1 简介\t242
14.1.1 改进前状态\t243
14.1.2 改进后状态\t245
14.2 改进方法论\t245
14.2.1 指导思想\t245
14.2.2 改进步骤\t245
14.3 改进的历程\t246
14.3.1 架构解耦\t246
14.3.2 组织解耦\t248
14.3.3 研发流程再造\t250
14.3.4 自动化一切\t259
14.4 小结\t260
第 15章 小团队逆袭之旅\t262
15.1 背景简介\t262
15.1.1 改进前的“死亡行军”之旅\t264
15.1.2 改进后的无缺陷交付\t264
15.2 改进方法论\t265
15.2.1 指导思想\t265
15.2.2 试点团队的选择\t265
15.3 第 一阶段:研发准备期\t266
15.3.1 功能简介与需求拆分\t266
15.3.2 架构设计与需求依赖识别\t267
15.3.3 工作量估算与排期\t268
15.4 第二阶段:软件交付期\t270
15.4.1 通过可视化看板改进工作流程\t270
15.4.2 无缺陷交付\t277
15.4.3 主干开发与持续集成\t278
15.4.4 测试活动左移\t279
15.4.5 代码评审\t279
15.4.6 关注结果,更要关注
过程\t280
15.5 小结\t281
第 16章 研发推动的DevOps\t283
16.1 改进的关键点\t285
16.1.1 改进方法论\t285
16.1.2 定义改进目标\t285
16.2 第 一阶段:敏捷101\t287
16.2.1 做个靠谱的计划\t287
16.2.2 开发阶段启航\t291
16.2.3 对过程质量的约束\t294
16.2.4 阶段性改进点\t301
16.3 第二阶段:DevOps转型\t302
16.3.1 与运维人员的“冲突”\t303
16.3.2 高频部署发布中的具体障碍\t304
16.3.3 整体解决方案的设计\t304
16.3.4 DevOps阶段的团队改变\t308
16.4 小结\t308
第 17章 研发组织效能提升的必经之路\t310
17.1 知识工作者与熵增定律\t310
17.1.1 每个工程师生产的都是非标品\t310
17.1.2 软件工程的复杂性令研发效率降低\t311
17.2 一致性是效能提升的必经之路\t313
17.3 组织能力三要素\t314
17.4 胜任力评估\t315
17.4.1 组织胜任力评估模型\t316
17.4.2 个人胜任力培养体系\t318
17.5 组织健康度\t319
17.6 小结\t320
附录A 软件工程的三次进化\t321
A.1 软件工程的诞生\t322
A.1.1 软件危机\t322
A.1.2 瀑布软件开发模型\t322
A.2 二次进化:敏捷开发\t324
A.2.1 前奏——螺旋模型\t324
A.2.2 敏捷宣言的诞生\t324
A.2.3 敏捷软件开发方法的演化\t328
A.2.4 敏捷软件开发方法小结\t329
A.2.5 TPS启发下的软件开发方法\t330
A.3 三次进化:DevOps\t331
A.3.1 DevOps运动的兴起\t331
A.3.2 持续交付的诞生\t332
A.4 小结\t333
附录B 排序法做相对估算\t334
B.1 排序法相对估算\t334
B.2 相对排序法的操作过程\t335
B.3 小结\t338
第 1章 持续交付2.0\t1
1.1 软件工程发展概述\t1
1.1.1 瀑布软件开发方法\t1
1.1.2 敏捷软件开发方法\t2
1.1.3 DevOps运动\t3
1.1.4 持续交付1.0\t4
1.2 持续交付2.0\t7
1.2.1 精益思想\t8
1.2.2 双环模型\t9
1.2.3 4个核心原则\t11
1.2.4 持续交付七巧板\t12
1.3 小结\t13
第 2章 价值探索环\t14
2.1 探索环的意义\t14
2.2 探索环的4个关键环节\t15
2.2.1 提问\t16
2.2.2 锚定\t17
2.2.3 共创\t19
2.2.4 精炼\t22
2.3 工作原则\t24
2.3.1 分解并快速试错\t24
2.3.2 一次只验证一点\t25
2.3.3 允许失败\t26
2.4 共创与精炼的常用方法\t27
2.4.1 装饰窗方法\t27
2.4.2 最小可行特性法\t29
2.4.3 特区法\t30
2.4.4 定向探索法\t30
2.4.5 稻草人法\t31
2.4.6 最小可行产品法\t32
2.5 实施注意事项\t32
2.6 小结\t35
第3章 快速验证环\t36
3.1 验证环的目标\t36
3.2 验证环的4个关键环节\t37
3.2.1 构建\t37
3.2.2 运行\t38
3.2.3 监测\t39
3.2.4 决策\t39
3.3 工作原则\t39
3.3.1 质量内建\t39
3.3.2 消除等待\t40
3.3.3 重复事务自动化\t43
3.3.4 监测一切\t43
3.4 小结\t44
第4章 持续交付2.0的组织文化\t45
4.1 安全、信任与持续改善\t45
4.1.1 失败是安全的\t45
4.1.2 相互信任\t45
4.1.3 持续改善\t46
4.2 文化塑造四步法\t46
4.2.1 行为决定文化\t46
4.2.2 谷歌的工程师质量文化\t48
4.2.3 Etsy的持续试验文化\t49
4.3 行动原则\t50
4.3.1 价值导向\t51
4.3.2 快速验证\t51
4.3.3 持续学习\t51
4.4 度量原则\t55
4.4.1 度量指标的4类属性\t56
4.4.2 度量的目标是改善\t57
4.4.3 古德哈特定律\t57
4.4.4 度量应有行动决策\t58
4.5 “改善套路”进行持续改进\t58
4.6 小结\t59
第5章 持续交付的软件系统架构\t60
5.1 “大系统小做”原则\t61
5.1.1 持续交付架构要求\t61
5.1.2 系统拆分原则\t61
5.2 常见架构模式\t62
5.2.1 微核架构\t62
5.2.2 微服务架构\t63
5.2.3 巨石应用\t64
5.3 架构改造实施模式\t66
5.3.1 拆迁者模式\t67
5.3.2 绞杀者模式\t68
5.3.3 修缮者模式\t68
5.3.4 数据库的拆分方法\t70
5.4 小结\t70
第6章 业务需求协作管理\t72
6.1 产品版本周期概述\t73
6.1.1 准备期\t73
6.1.2 交付期\t74
6.2 需求拆分的利与弊\t75
6.2.1 需求拆分的收益\t76
6.2.2 需求拆分的成本\t78
6.3 需求拆分方法\t79
6.3.1 需求的来源\t80
6.3.2 技术债也是需求\t80
6.3.3 参与需求拆分的角色\t81
6.3.4 不平等的INVEST原则\t82
6.3.5 五大拆分技法\t82
6.3.6 七大组成部分\t84
6.4 需求分析与管理工具集\t85
6.4.1 用户故事地图\t85
6.4.2 用户故事树\t86
6.4.3 依赖关系图\t87
6.4.4 需求管理数字化平台\t87
6.5 团队协作管理工具\t87
6.5.1 团队共享日历\t88
6.5.2 团队回顾\t89
6.5.3 可视化故事墙\t90
6.5.4 明确“完成”的定义\t90
6.5.5 持续集成\t91
6.5.6 故事验证\t91
6.6 小结\t91
第7章 部署流水线原则与工具设计\t92
7.1 简单的部署流水线\t92
7.1.1 简单的产品研发流程\t92
7.1.2 初始部署流水线\t93
7.1.3 流水线执行状态解析\t95
7.2 部署流水线的设计与使用\t95
7.2.1 流水线的设计原则\t95
7.2.2 团队的协作纪律\t97
7.3 部署流水线平台的构成\t97
7.3.1 工具链总体架构\t97
7.3.2 平台应当具备的基本
能力\t99
7.3.3 工具链建设策略\t100
7.4 基础支撑服务的云化\t100
7.4.1 基础支撑服务的协作过程解析\t101
7.4.2 编译构建管理服务\t103
7.4.3 自动化测试管理服务\t104
7.4.4 软件部署管理服务\t105
7.4.5 基础环境管理服务\t106
7.5 企业制品库的管理\t107
7.5.1 制品库的分类\t107
7.5.2 制品库的管理原则\t108
7.6 多种多样的部署流水线\t108
7.6.1 多组件的部署流水线\t108
7.6.2 个人部署流水线\t109
7.6.3 部署流水线的不断演进\t110
7.7 为开发者构建自助式工具\t111
7.8 小结\t113
第8章 利于集成的分支策略\t114
8.1 版本控制系统的使用目的\t114
8.1.1 集中式版本控制系统\t114
8.1.2 分布式版本控制系统\t115
8.1.3 版本控制系统中的基本概念\t117
8.2 常见分支开发模式\t118
8.2.1 主干开发,主干发布\t118
8.2.2 主干开发,分支发布\t119
8.2.3 分支开发,主干发布\t121
8.3 分支模式的演化\t126
8.3.1 “三驾马车”分支模式\t126
8.3.2 Gitflow分支模式\t127
8.3.3 GitHubFlow分支模式\t128
8.4 分支策略的选择\t128
8.4.1 版本发布模式\t128
8.4.2 分支策略与发布周期的关系\t132
8.5 小结\t133
第9章 持续集成\t134
9.1 起源与定义\t134
9.1.1 原始定义\t135
9.1.2 一次集成过程\t135
9.2 六步提交法\t136
9.2.1 4个关键点\t138
9.2.2 同步与异步模式\t139
9.2.3 自查表\t140
9.3 速度与质量的权衡\t141
9.3.1 分级构建\t141
9.3.2 多人同时提交的构建\t142
9.3.3 云平台的威力\t143
9.4 在团队中实施持续集成实践\t145
9.4.1 快速建立团队的持续集成实践\t145
9.4.2 分支策略与部署流水线\t148
9.5 常见的实施问题\t150
9.5.1 工程师的开发习惯\t151
9.5.2 视而不见的扫描问题\t151
9.5.3 自动化测试用例的缺乏\t151
9.6 小结\t152
第 10章 自动化测试策略与方法\t153
10.1 自动化测试的自身定位\t153
10.1.1 自动化测试的优势\t154
10.1.2 自动化测试所需的 投入\t155
10.2 突破传统自动化测试的困境\t156
10.2.1 传统自动化测试的特点\t157
10.2.2 自动化测试的分层\t157
10.2.3 不同类型的测试金字塔\t160
10.3 自动化测试的实施策略\t163
10.3.1 增加自动化测试用例的着手点\t163
10.3.2 提高自动化测试的执行次数\t164
10.3.3 良好自动化测试的特征\t165
10.3.4 共享自动化测试的维护职责\t166
10.3.5 代码测试覆盖率\t167
10.4 用户验收自动化测试要点\t168
10.4.1 先搭建分层框架\t168
10.4.2 测试用例数应保持低位\t171
10.4.3 为自动化测试用例预留API\t171
10.4.4 为调试做好准备\t171
10.4.5 测试数据的准备\t171
10.5 其他质量检查方法\t173
10.5.1 差异批准测试方法\t173
10.5.2 代码规范检查与代码动静态检测\t174
10.5.3 AI在测试领域的应用\t174
10.6 小结\t175
第 11章 软件配置管理\t176
11.1 将一切纳入软件配置管理\t176
11.1.1 软件配置管理的目标\t176
11.1.2 软件配置管理的范围\t177
11.1.3 软件配置管理的原则\t177
11.2 软件包的版本管理\t181
11.2.1 包管理的反模式\t181
11.2.2 集中式包管理服务\t182
11.2.3 软件包的元信息\t183
11.3 包依赖管理\t185
11.3.1 显式声明依赖\t185
11.3.2 自动管理依赖\t187
11.3.3 减少复杂依赖\t188
11.4 环境基础设施管理\t191
11.4.1 环境准备的4种状态\t191
11.4.2 领域专属语言的应用\t197
11.4.3 环境基础设施即代码\t198
11.5 软件配置项的管理\t199
11.5.1 二进制与配置项的分离\t199
11.5.2 配置信息的版本管理\t200
11.5.3 配置项的存储组织方式\t201
11.5.4 配置漂移与治理\t202
11.6 不可变基础设施与云应用\t203
11.6.1 实现不可变基础设施\t203
11.6.2 云原生应用\t206
11.6.3 优势与挑战\t206
11.7 数据的版本管理\t208
11.7.1 数据库结构变更\t208
11.7.2 数据文件\t208
11.8 需求与源代码的版本关联\t209
11.9 小结\t209
第 12章 低风险发布\t211
12.1 高频发布是一种趋势\t211
12.1.1 互联网企业的高频发布\t212
12.1.2 收益与成本共存\t214
12.2 降低发布风险的方法\t215
12.2.1 蓝绿部署\t215
12.2.2 滚动部署\t216
12.2.3 金丝雀发布与灰度发布\t217
12.2.4 暗部署\t218
12.3 高频发布支撑技术\t219
12.3.1 功能开关技术\t220
12.3.2 数据迁移技术\t222
12.3.3 抽象分支方法\t225
12.3.4 升级替代回滚\t226
12.4 影响发布频率的因素\t227
12.5 小结\t228
第 13章 监测与决策\t229
13.1 生产监测范围\t230
13.1.1 后台服务的监测\t230
13.1.2 分发软件的监测\t230
13.2 数据监测体系\t231
13.2.1 收集与处理\t231
13.2.2 数据的标准化\t232
13.2.3 监测数据体系及其能力衡量\t233
13.3 问题处理体系\t235
13.3.1 告警海洋与智能化管理\t235
13.3.2 问题处理是一个学习过程\t236
13.4 生产环境测试\t237
13.4.1 测试活动扁平化趋势\t237
13.4.2 生产环境中的测试\t239
13.4.3 混沌工程\t239
13.5 向东,还是向西\t240
13.6 小结\t241
第 14章 大型互联网团队的FT化\t242
14.1 简介\t242
14.1.1 改进前状态\t243
14.1.2 改进后状态\t245
14.2 改进方法论\t245
14.2.1 指导思想\t245
14.2.2 改进步骤\t245
14.3 改进的历程\t246
14.3.1 架构解耦\t246
14.3.2 组织解耦\t248
14.3.3 研发流程再造\t250
14.3.4 自动化一切\t259
14.4 小结\t260
第 15章 小团队逆袭之旅\t262
15.1 背景简介\t262
15.1.1 改进前的“死亡行军”之旅\t264
15.1.2 改进后的无缺陷交付\t264
15.2 改进方法论\t265
15.2.1 指导思想\t265
15.2.2 试点团队的选择\t265
15.3 第 一阶段:研发准备期\t266
15.3.1 功能简介与需求拆分\t266
15.3.2 架构设计与需求依赖识别\t267
15.3.3 工作量估算与排期\t268
15.4 第二阶段:软件交付期\t270
15.4.1 通过可视化看板改进工作流程\t270
15.4.2 无缺陷交付\t277
15.4.3 主干开发与持续集成\t278
15.4.4 测试活动左移\t279
15.4.5 代码评审\t279
15.4.6 关注结果,更要关注
过程\t280
15.5 小结\t281
第 16章 研发推动的DevOps\t283
16.1 改进的关键点\t285
16.1.1 改进方法论\t285
16.1.2 定义改进目标\t285
16.2 第 一阶段:敏捷101\t287
16.2.1 做个靠谱的计划\t287
16.2.2 开发阶段启航\t291
16.2.3 对过程质量的约束\t294
16.2.4 阶段性改进点\t301
16.3 第二阶段:DevOps转型\t302
16.3.1 与运维人员的“冲突”\t303
16.3.2 高频部署发布中的具体障碍\t304
16.3.3 整体解决方案的设计\t304
16.3.4 DevOps阶段的团队改变\t308
16.4 小结\t308
第 17章 研发组织效能提升的必经之路\t310
17.1 知识工作者与熵增定律\t310
17.1.1 每个工程师生产的都是非标品\t310
17.1.2 软件工程的复杂性令研发效率降低\t311
17.2 一致性是效能提升的必经之路\t313
17.3 组织能力三要素\t314
17.4 胜任力评估\t315
17.4.1 组织胜任力评估模型\t316
17.4.2 个人胜任力培养体系\t318
17.5 组织健康度\t319
17.6 小结\t320
附录A 软件工程的三次进化\t321
A.1 软件工程的诞生\t322
A.1.1 软件危机\t322
A.1.2 瀑布软件开发模型\t322
A.2 二次进化:敏捷开发\t324
A.2.1 前奏——螺旋模型\t324
A.2.2 敏捷宣言的诞生\t324
A.2.3 敏捷软件开发方法的演化\t328
A.2.4 敏捷软件开发方法小结\t329
A.2.5 TPS启发下的软件开发方法\t330
A.3 三次进化:DevOps\t331
A.3.1 DevOps运动的兴起\t331
A.3.2 持续交付的诞生\t332
A.4 小结\t333
附录B 排序法做相对估算\t334
B.1 排序法相对估算\t334
B.2 相对排序法的操作过程\t335
B.3 小结\t338
猜您喜欢