《持续交付2.0 业务引领的DevOps精要》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:乔梁著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2019
  • ISBN:9787115500014
  • 页数:327 页
图书介绍:持续交付是重要软件开发方法之一。本书分三个部分:第一部分作者根据自己近十年的工作及咨询经历,对原有的持续交付进行了修正,将持续交付重新定义为实现组织战略目标的能力,并引入持续交付的能力模型;第二部分阐述组织打造持续交付能力所需遵守的原则,包括基础原则、组织原则和架构原则;第三部分通过多个案例解读,阐述如何根据组织的当前状况和应用原则,并对最佳实践进行取舍,快速达到组织能力目标。杨海玲。

第1章 持续交付2.0 1

1.1软件工程发展概述 1

1.1.1瀑布软件开发方法 1

1.1.2敏捷软件开发方法 2

1.1.3 DevOps运动 3

1.1.4持续交付1.0 4

1.2持续交付2.0 7

1.2.1精益思想 8

1.2.2双环模型 9

1.2.3 4个核心原则 11

1.2.4持续交付七巧板 12

1.3小结 13

第2章 价值探索环 14

2.1探索环的意义 14

2.2探索环的4个关键环节 15

2.2.1提问 16

2.2.2锚定 17

2.2.3共创 19

2.2.4精炼 22

2.3工作原则 24

2.3.1分解并快速试错 24

2.3.2一次只验证一点 25

2.3.3允许失败 26

2.4共创与精炼的常用方法 27

2.4.1装饰窗方法 27

2.4.2最小可行特性法 29

2.4.3特区法 30

2.4.4定向探索法 30

2.4.5稻草人法 31

2.4.6最小可行产品法 32

2.5实施注意事项 32

2.6小结 35

第3章 快速验证环 36

3.1验证环的目标 36

3.2验证环的4个关键环节 37

3.2.1构建 37

3.2.2运行 38

3.2.3监测 39

3.2.4决策 39

3.3工作原则 39

3.3.1质量内建 39

3.3.2消除等待 40

3.3.3重复事务自动化 43

3.3.4监测一切 43

3.4小结 44

第4章 持续交付2.0的组织文化 45

4.1安全、信任与持续改善 45

4.1.1失败是安全的 45

4.1.2相互信任 45

4.1.3持续改善 46

4.2文化塑造四步法 46

4.2.1行为决定文化 46

4.2.2谷歌的工程师质量文化 48

4.2.3 Etsy的持续试验文化 49

4.3行动原则 50

4.3.1价值导向 51

4.3.2快速验证 51

4.3.3持续学习 51

4.4度量原则 55

4.4.1度量指标的4类属性 56

4.4.2度量的目标是改善 57

4.5“改善套路”进行持续改进 57

4.6小结 58

第5章 持续交付的软件系统架构 60

5.1“大系统小做”原则 61

5.1.1持续交付架构要求 61

5.1.2系统拆分原则 61

5.2常见架构模式 62

5.2.1微核架构 62

5.2.2微服务架构 63

5.2.3巨石应用 64

5.3架构改造实施模式 66

5.3.1拆迁者模式 67

5.3.2绞杀者模式 68

5.3.3修缮者模式 68

5.3.4数据库的拆分方法 70

5.4小结 70

第6章 业务需求协作管理 72

6.1产品版本周期概述 73

6.1.1准备期 73

6.1.2交付期 74

6.2需求拆分的利与弊 75

6.2.1需求拆分的收益 76

6.2.2需求拆分的成本 78

6.3需求拆分方法 79

6.3.1需求的来源 80

6.3.2技术债也是需求 80

6.3.3参与需求拆分的角色 81

6.3.4不平等的INVEST原则 82

6.3.5五大拆分技法 82

6.3.6七大组成部分 84

6.4需求分析与管理工具集 85

6.4.1用户故事地图 85

6.4.2用户故事树 86

6.4.3依赖关系图 87

6.4.4需求管理数字化平台 87

6.5团队协作管理工具 87

6.5.1团队共享日历 88

6.5.2团队回顾 89

6.5.3可视化故事墙 90

6.5.4明确“完成”的定义 90

6.5.5持续集成 91

6.5.6故事验证 91

6.6小结 91

第7章 部署流水线原则与工具设计 92

7.1简单的部署流水线 92

7.1.1简单的产品研发流程 92

7.1.2初始部署流水线 93

7.1.3流水线执行状态解析 95

7.2部署流水线的设计与使用 95

7.2.1流水线的设计原则 95

7.2.2团队的协作纪律 97

7.3部署流水线平台的构成 97

7.3.1工具链总体架构 97

7.3.2平台应当具备的基本能力 99

7.3.3工具链建设策略 100

7.4基础支撑服务的云化 100

7.4.1基础支撑服务的协作过程解析 101

7.4.2编译构建管理服务 103

7.4.3自动化测试管理服务 104

7.4.4软件部署管理服务 105

7.4.5基础环境管理服务 106

7.5企业制品库的管理 107

7.5.1制品库的分类 107

7.5.2制品库的管理原则 108

7.6多种多样的部署流水线 108

7.6.1多组件的部署流水线 108

7.6.2个人部署流水线 109

7.6.3部署流水线的不断演进 110

7.7为开发者构建自助式工具 111

7.8小结 113

第8章 利于集成的分支策略 114

8.1版本控制系统的使用目的 114

8.1.1集中式版本控制系统 114

8.1.2分布式版本控制系统 115

8.1.3版本控制系统中的基本概念 117

8.2常见分支开发模式 118

8.2.1主干开发,主干发布 118

8.2.2主干开发,分支发布 119

8.2.3分支开发,主干发布 121

8.3分支模式的演化 126

8.3.1三驾马车分支模式 126

8.3.2 Gitflow分支模式 127

8.3.3 GitHubFlow分支模式 128

8.4分支策略的选择 128

8.4.1版本发布模式 128

8.4.2分支策略与发布周期的关系 132

8.5小结 133

第9章 持续集成 134

9.1起源与定义 134

9.1.1原始定义 135

9.1.2一次集成过程 135

9.2六步提交法 136

9.2.1 4个关键点 138

9.2.2同步与异步模式 139

9.2.3自查表 140

9.3速度与质量的权衡 141

9.3.1分级构建 142

9.3.2多人同时提交的构建 142

9.3.3云平台的威力 143

9.4在团队中实施持续集成实践 145

9.4.1快速建立团队的持续集成实践 146

9.4.2分支策略与部署流水线 148

9.5常见的实施问题 150

9.5.1工程师的开发习惯 151

9.5.2视而不见的扫描问题 151

9.5.3自动化测试用例的缺乏 151

9.6小结 152

第10章 自动化测试策略与方法 153

10.1自动化测试的自身定位 153

10.1.1自动化测试的优势 154

10.1.2自动化测试所需的投入 155

10.2突破传统自动化测试的困境 156

10.2.1传统自动化测试的特点 157

10.2.2自动化测试的分层 157

10.2.3不同类型的测试金字塔 160

10.3自动化测试的实施策略 163

10.3.1增加自动化测试用例的着手点 163

10.3.2提高自动化测试的执行次数 164

10.3.3良好自动化测试的特征 165

10.3.4共享自动化测试的维护职责 166

10.3.5代码测试覆盖率 167

10.4用户验收自动化测试要点 168

10.4.1先搭建分层框架 168

10.4.2测试用例数应保持低位 171

10.4.3为自动化测试用例预留API 171

10.4.4为调试做好准备 171

10.4.5测试数据的准备 171

10.5其他质量检查方法 173

10.5.1差异批注测试方法 173

10.5.2代码规范检查与代码动静态检测 174

10.5.3 AI在测试领域的应用 174

10.6小结 175

第11章 软件配置管理 176

11.1将一切纳入配置管理 176

11.1.1配置管理目标 176

11.1.2配置管理的范围 177

11.1.3软件配置管理原则 177

11.2软件包的版本管理 181

11.2.1包管理的反模式 181

11.2.2集中式包管理服务 182

11.2.3软件包的元信息 183

11.3包依赖管理 185

11.3.1显式声明依赖 185

11.3.2自动管理依赖 187

11.3.3减少复杂依赖 188

11.4环境基础设施管理 191

11.4.1环境准备的4种状态 191

11.4.2领域专属语言的应用 197

11.4.3环境基础设施即代码 198

11.5软件配置项的管理 199

11.5.1二进制与配置项的分离 199

11.5.2配置信息的版本管理 200

11.5.3配置项的存储组织方式 201

11.5.4配置漂移与治理 202

11.6不可变基础设施与云应用 203

11.6.1实现不可变基础设施 203

11.6.2云原生应用 206

11.6.3优势与挑战 206

11.7数据的版本管理 208

11.7.1数据库结构变更 208

11.7.2数据文件 208

11.8需求与源代码的版本关联 209

11.9小结 209

第12章 低风险发布 211

12.1高频发布是一种趋势 211

12.1.1互联网企业的高频发布 212

12.1.2收益与成本共存 214

12.2降低发布风险的方法 215

12.2.1蓝绿部署 215

12.2.2滚动部署 216

12.2.3金丝雀发布与灰度发布 217

12.2.4暗部署 218

12.3高频发布支撑技术 219

12.3.1功能开关技术 220

12.3.2数据迁移技术 222

12.3.3抽象分支方法 225

12.3.4升级替代回滚 226

12.4影响发布频率的因素 227

12.5小结 228

第13章 监测与决策 229

13.1生产监测范围 230

13.1.1后台服务的监测 230

13.1.2分发软件的监测 230

13.2数据监测体系 231

13.2.1收集与处理 231

13.2.2数据的标准化 232

13.2.3监测数据体系及其能力衡量 233

13.3问题处理体系 235

13.3.1告警海洋与智能化管理 235

13.3.2问题处理是一个学习过程 236

13.4生产环境测试 237

13.4.1测试活动扁平化趋势 237

13.4.2生产环境中的测试 239

13.4.3混沌工程 239

13.5向东,还是向西 240

13.6小结 241

第14章 大型互联网团队的FT化 242

14.1简介 242

14.1.1改进前状态 243

14.1.2改进后状态 244

14.2改进方法论 245

14.2.1指导思想 245

14.2.2改进步骤 245

14.3改进的历程 246

14.3.1架构解耦 246

14.3.2组织解耦 248

14.3.3研发流程再造 250

14.3.4自动化一切 259

14.4小结 260

第15章 小团队逆袭之旅 262

15.1背景简介 262

15.1.1改进前的“死亡行军”之旅 264

15.1.2改进后的无缺陷交付 264

15.2改进方法论 265

15.2.1指导思想 265

15.2.2试点团队的选择 265

15.3第一阶段:研发准备期 266

15.3.1功能简介与需求拆分 266

15.3.2架构设计与需求依赖识别 267

15.3.3工作量估算与排期 268

15.4第二阶段:软件交付期 270

15.4.1通过可视化看板改进工作流程 270

15.4.2无缺陷交付 277

15.4.3主干开发与持续集成 278

15.4.4测试活动左移 279

15.4.5代码评审 279

15.4.6关注结果,更要关注过程 280

15.5小结 281

第16章 研发推动的DevOps 283

16.1改进的关键点 285

16.1.1改进方法论 285

16.1.2定义改进目标 285

16.2第一阶段:敏捷101 287

16.2.1做个靠谱的计划 287

16.2.2开发阶段启航 291

16.2.3对过程质量的约束 294

16.2.4阶段性改进点 301

16.3第二阶段:DevOps转型 302

16.3.1与运维人员的“冲突” 303

16.3.2高频部署发布中的具体障碍 304

16.3.3整体解决方案的设计 304

16.3.4 DevOps阶段的团队改变 308

16.4小结 308

附录A 软件工程的三次进化 310

附录B 排序法做相对估算 323