持续交付

持续交付 pdf epub mobi txt 电子书 下载 2026

出版者:人民邮电出版社
作者:Jez Humble
出品人:图灵教育
页数:362
译者:乔梁
出版时间:2011-10
价格:89.00元
装帧:平装
isbn号码:9787115264596
丛书系列:图灵程序设计丛书
图书标签:
  • 软件工程
  • 持续交付
  • 敏捷开发
  • 项目管理
  • 软件开发
  • 计算机
  • IT
  • agile
  • 持续交付
  • 软件工程
  • 自动化
  • DevOps
  • 敏捷开发
  • 持续集成
  • 质量保障
  • 交付流程
  • 迭代开发
  • 技术管理
想要找书就要到 图书目录大全
立刻按 ctrl+D收藏本页
你会得到大惊喜!!

具体描述

Jez Humble编著的《持续交付(发布可靠软件的系统方法)》讲述如何实现更快、更可靠、低成本的自动化软件交付,描述了如何通过增加反馈,并改进开发人员、测试人员、运维人员和项目经理之间的协作来达到这个目标。《持续交付(发布可靠软件的系统方法)》由三部分组成。第一部分阐述了持续交付背后的一些原则,以及支持这些原则的实践。第二部分是本书的核心,全面讲述了部署流水线。第三部分围绕部署流水线的投入产出讨论了更多细节,包括增量开发技术、高级版本控制模式,以及基础设施、环境和数据的管理和组织治理。 《持续交付(发布可靠软件的系统方法)》适合所有开发人员、测试人员、运维人员和项目经理学习参考。

作者简介

Jez Humble ToughtWorks公司首席咨询顾问,致力于帮助企业快速、可靠地交付高质量软件,经常在各种敏捷技术大会上发表演讲,拥有牛津大学物理学学士学位和 伦敦大学民族音乐学的 硕士学位。2000年至今,他曾在各行业和不同技术领域担任系统管理员、开发人员、培训人员、咨询师和经理人员。

David Farley 正在帮助构建伦敦多资产交易所(LMAE)。他具有20年的大型分布式系统开发经验,是采用敏捷开发技术的先行者,曾作为技术负责人参加了ThoughtWorks公司许多极具挑战性的软件项目。

目录信息

第一部分 基础篇
第1 章 软件交付的问题   2
1.1 引言  2
1.2 一些常见的发布反模式   3
1.2.1 反模式:手工部署软件   4
1.2.2 反模式:开发完成之后才向类生产环境部署   5
1.2.3 反模式:生产环境的手工配置管理  7
1.2.4 我们能做得更好吗   8
1.3 如何实现目标   9
1.3.1 每次修改都应该触发反馈流程  10
1.3.2 必须尽快接收反馈   11
1.3.3 交付团队必须接收反馈并作出反应   12
1.3.4 这个流程可以推广吗  12
1.4 收效  12
1.4.1 授权团队  13
1.4.2 减少错误  13
1.4.3 缓解压力  15
1.4.4 部署的灵活性  16
1.4.5 多加练习,使其完美  17
1.5 候选发布版本  17
1.6 软件交付的原则  19
1.6.1 为软件的发布创建一个可重复且可靠的过程  19
1.6.2 将几乎所有事情自动化  19
1.6.3 把所有的东西都纳入版本控制  20
1.6.4 提前并频繁地做让你感到痛苦的事  20
1.6.5 内建质量  21
1.6.6 “DONE”意味着“已发布”    21
1.6.7 交付过程是每个成员的责任   22
1.6.8 持续改进  22
1.7 小结   23
第2 章 配置管理  24
2.1 引言  24
2.2 使用版本控制  25
2.2.1 对所有内容进行版本控制  26
2.2.2 频繁提交代码到主干  28
2.2.3 使用意义明显的提交注释  29
2.3 依赖管理  30
2.3.1 外部库文件管理  30
2.3.2 组件管理  30
2.4 软件配置管理  31
2.4.1 配置与灵活性  31
2.4.2 配置的分类   33
2.4.3 应用程序的配置管理  33
2.4.4 跨应用的配置管理  36
2.4.5 管理配置信息的原则   37
2.5 环境管理   38
2.5.1 环境管理的工具  41
2.5.2 变更过程管理  41
2.6 小结   42
第3 章 持续集成  43
3.1 引言  43
3.2 实现持续集成  44
3.2.1 准备工作  44
3.2.2 一个基本的持续集成系统  45
3.3 持续集成的前提条件  46
3.3.1 频繁提交  46
3.3.2 创建全面的自动化测试套件  47
3.3.3 保持较短的构建和测试过程  47
3.3.4 管理开发工作区   49
3.4 使用持续集成软件  49
3.4.1 基本操作   49
3.4.2 铃声和口哨   50
3.5 必不可少的实践   52
3.5.1 构建失败之后不要提交新代码  52
3.5.2 提交前在本地运行所有的提交测试,或者让持续集成服务器完成此事  53
3.5.3 等提交测试通过后再继续工作  54
3.5.4 回家之前,构建必须处于成功状态   54
3.5.5 时刻准备着回滚到前一个版本  55
3.5.6 在回滚之前要规定一个修复时间  56
3.5.7 不要将失败的测试注释掉   56
3.5.8 为自己导致的问题负责  56
3.5.9 测试驱动的开发  57
3.6 推荐的实践   57
3.6.1 极限编程开发实践  57
3.6.2 若违背架构原则,就让构建失败   58
3.6.3 若测试运行变慢,就让构建失败   58
3.6.4 若有编译警告或代码风格问题,就让测试失败  59
3.7 分布式团队  60
3.7.1 对流程的影响  60
3.7.2 集中式持续集成   61
3.7.3 技术问题  61
3.7.4 替代方法   62
3.8 分布式版本控制系统  63
3.9 小结  66
第4 章 测试策略的实现   67
4.1 引言   67
4.2 测试的分类   68
4.2.1 业务导向且支持开发过程的测试  69
4.2.2 技术导向且支持开发过程的测试  72
4.2.3 业务导向且评价项目的测试  72
4.2.4 技术导向且评价项目的测试  73
4.2.5 测试替身  74
4.3 现实中的情况与应对策略  75
4.3.1 新项目  75
4.3.2 项目进行中   76
4.3.3 遗留系统   77
4.3.4 集成测试  78
4.4 流程  80
4.5 小结  82
第二部分 部署流水线
第5 章 部署流水线解析  84
5.1 引言   84
5.2 什么是部署流水线  85
5.3 部署流水线的相关实践  91
5.3.1 只生成一次二进制包   91
5.3.2 对不同环境采用同一部署方式  93
5.3.3 对部署进行冒烟测试   94
5.3.4 向生产环境的副本中部署  94
5.3.5 每次变更都要立即在流水线中传递   95
5.3.6 只要有环节失败,就停止整个流水线  96
5.4 提交阶段  96
5.5 自动化验收测试之门  99
5.6 后续的测试阶段  102
5.6.1 手工测试   103
5.6.2 非功能测试  103
5.7 发布准备  104
5.7.1 自动部署与发布   104
5.7.2 变更的撤销  106
5.7.3 在成功的基础上构建   107
5.8 实现一个部署流水线   107
5.8.1 对价值流进行建模并创建简单的可工作框架   107
5.8.2 构建和部署过程的自动化  108
5.8.3 自动化单元测试和代码分析  109
5.8.4 自动化验收测试   109
5.8.5 部署流水线的演进   110
5.9 度量  111
5.10 小结  113
第6 章 构建与部署的脚本化   115
6.1 引言  115
6.2 构建工具概览  116
6.2.1 Make  118
6.2.2 Ant  118
6.2.3 NAnt 与 MSBuild  119
6.2.4 Maven  120
6.2.5 Rake   121
6.2.6 Buildr   121
6.2.7 Psake   121
6.3 构建部署脚本化的原则与实践   122
6.3.1 为部署流水线的每个阶段创建脚本  122
6.3.2 使用恰当的技术部署应用程序   122
6.3.3 使用同样的脚本向所有环境部署  123
6.3.4 使用操作系统自带的包管理工具  124
6.3.5 确保部署流程是幂等的(Idempotent)  125
6.3.6 部署系统的增量式演进  126
6.4 面向JVM 的应用程序的项目结构  126
6.5 部署脚本化  129
6.5.1 多层的部署和测试  130
6.5.2 测试环境配置  131
6.6 小贴士  132
6.6.1 总是使用相对路径  132
6.6.2 消除手工步骤  132
6.6.3 从二进制包到版本控制库的内建可追溯性  133
6.6.4 不要把二进制包作为构建的一部分放到版本控制库中  133
6.6.5 “test”不应该让构建失败  134
6.6.6 用集成冒烟测试来限制应用程序  134
6.6.7 .NET 小贴士  135
6.7 小结  135
第7 章 提交阶段  137
7.1 引言  137
7.2 提交阶段的原则和实践  138
7.2.1 提供快速有用的反馈  138
7.2.2 何时令提交阶段失败  139
7.2.3 精心对待提交阶段  140
7.2.4 让开发人员也拥有所有权  140
7.2.5 在超大项目团队中指定一个构建负责人  141
7.3 提交阶段的结果  141
7.4 提交测试套件的原则与实践  144
7.4.1 避免用户界面  145
7.4.2 使用依赖注入  145
7.4.3 避免使用数据库  145
7.4.4 在单元测试中避免异步  146
7.4.5 使用测试替身   146
7.4.6 最少化测试中的状态   149
7.4.7 时间的伪装  150
7.4.8 蛮力  150
7.5 小结   151
第8 章 自动化验收测试  152
8.1 引言   152
8.2 为什么验收测试是至关重要的   153
8.2.1 如何创建可维护的验收测试套件  155
8.2.2 GUI 上的测试   156
8.3 创建验收测试  157
8.3.1 分析人员和测试人员的角色  157
8.3.2 迭代开发项目中的分析工作  157
8.3.3 将验收条件变成可执行的规格说明书   158
8.4 应用程序驱动层  161
8.4.1 如何表述验收条件   163
8.4.2 窗口驱动器模式:让测试与GUI 解耦  164
8.5 实现验收测试  166
8.5.1 验收测试中的状态   166
8.5.2 过程边界、封装和测试   168
8.5.3 管理异步与超时问题   169
8.5.4 使用测试替身对象   171
8.6 验收测试阶段  174
8.6.1 确保验收测试一直处于通过状态  175
8.6.2 部署测试  177
8.7 验收测试的性能  178
8.7.1 重构通用任务   178
8.7.2 共享昂贵资源   179
8.7.3 并行测试  180
8.7.4 使用计算网格   180
8.8 小结  181
第9 章 非功能需求的测试  183
9.1 引言  183
9.2 非功能需求的管理  184
9.3 如何为容量编程  186
9.4 容量度量  188
9.5 容量测试环境  191
9.6 自动化容量测试  194
9.6.1 通过UI 的容量测试  195
9.6.2 基于服务或公共API 来录制交互操作  196
9.6.3 使用录制的交互模板   197
9.6.4 使用容量测试桩开发测试  198
9.7 将容量测试加入到部署流水线中  199
9.8 容量测试系统的附加价值   201
9.9 小结   202
第10 章 应用程序的部署与发布   203
10.1 引言  203
10.2 创建发布策略   204
10.2.1 发布计划  205
10.2.2 发布产品  205
10.3 应用程序的部署和晋级   206
10.3.1 首次部署  206
10.3.2 对发布过程进行建模并让构建晋级   207
10.3.3 配置的晋级  209
10.3.4 联合环境  209
10.3.5 部署到试运行环境   210
10.4 部署回滚和零停机发布  211
10.4.1 通过重新部署原有的正常版本来进行回滚  211
10.4.2 零停机发布  212
10.4.3 蓝绿部署   212
10.4.4 金丝雀发布  213
10.5 紧急修复  216
10.6 持续部署  216
10.7 小贴士和窍门   219
10.7.1 真正执行部署操作的人应该参与部署过程的创建  219
10.7.2 记录部署活动   220
10.7.3 不要删除旧文件,而是移动到别的位置   220
10.7.4 部署是整个团队的责任   220
10.7.5 服务器应用程序不应该有GUI   220
10.7.6 为新部署留预热期   221
10.7.7 快速失败   221
10.7.8 不要直接对生产环境进行修改  222
10.8 小结  222
第三部分 交付生态圈
第11 章 基础设施和环境管理   224
11.1 引言   224
11.2 理解运维团队的需要   225
11.2.1 文档与审计   226
11.2.2 异常事件的告警   227
11.2.3 保障IT 服务持续性的计划  227
11.2.4 使用运维团队熟悉的技术   228
11.3 基础设施的建模和管理  229
11.3.1 基础设施的访问控制   230
11.3.2 对基础设施进行修改   231
11.4 服务器的准备及其配置的管理   232
11.4.1 服务器的准备   233
11.4.2 服务器的持续管理   234
11.5 中间件的配置管理  239
11.5.1 管理配置项   239
11.5.2 产品研究   241
11.5.3 考查中间件是如何处理状态的   242
11.5.4 查找用于配置的API    242
11.5.5 使用更好的技术   243
11.6 基础设施服务的管理  243
11.7 虚拟化  245
11.7.1 虚拟环境的管理   247
11.7.2 虚拟环境和部署流水线  249
11.7.3 用虚拟环境做高度的并行测试  251
11.8 云计算  252
11.8.1 云中基础设施  253
11.8.2 云中平台  254
11.8.3 没有普适存在  255
11.8.4 对云计算的批评  256
11.9 基础设施和应用程序的监控  256
11.9.1 收集数据  257
11.9.2 记录日志  259
11.9.3 建立信息展示板  259
11.9.4 行为驱动的监控  261
11.10 小结  261
第12 章 数据管理  263
12.1 引言  263
12.2 数据库脚本化  264
12.3 增量式修改  265
12.3.1 对数据库进行版本控制  265
12.3.2 联合环境中的变更管理  267
12.4 数据库回滚和无停机发布  268
12.4.1 保留数据的回滚  268
12.4.2 将应用程序部署与数据库迁移解耦  269
12.5 测试数据的管理  270
12.5.1 为单元测试进行数据库模拟  271
12.5.2 管理测试与数据之间的耦合  272
12.5.3 测试独立性  272
12.5.4 建立和销毁  273
12.5.5 连贯的测试场景  273
12.6 数据管理和部署流水线  274
12.6.1 提交阶段的测试数据  274
12.6.2 验收测试中的数据  275
12.6.3 容量测试的数据  276
12.6.4 其他测试阶段的数据  277
12.7 小结  278
第13 章 组件和依赖管理  280
13.1 引言  280
13.2 保持应用程序可发布  281
13.2.1 将新功能隐蔽起来,直到它完成为止  282
13.2.2 所有修改都是增量式的   283
13.2.3 通过抽象来模拟分支   284
13.3 依赖  285
13.3.1 依赖地狱   286
13.3.2 库管理   287
13.4 组件  289
13.4.1 如何将代码库分成多个组件  289
13.4.2 将组件流水线化   292
13.4.3 集成流水线   293
13.5 管理依赖关系图  295
13.5.1 构建依赖图   295
13.5.2 为依赖图建立流水线   297
13.5.3 什么时候要触发构建   299
13.5.4 谨慎乐观主义   300
13.5.5 循环依赖  302
13.6 管理二进制包  303
13.6.1 制品库是如何运作的   303
13.6.2 部署流水线如何与制品库相结合   304
13.7 用Maven 管理依赖  304
13.8 小结   308
第14 章 版本控制进阶   309
14.1 引言  309
14.2 版本控制的历史  310
14.2.1 CVS   310
14.2.2 SVN   311
14.2.3 商业版本控制系统   312
14.2.4 放弃悲观锁   313
14.3 分支与合并   314
14.3.1 合并   316
14.3.2 分支、流和持续集成   317
14.4 DVCS   319
14.4.1 什么是DVCS    319
14.4.2 DVCS 简史   321
14.4.3 企业环境中的DVCS   321
14.4.4 使用DVCS   322
14.5 基于流的版本控制系统   324
14.5.1 什么是基于流的版本控制系统  324
14.5.2 使用流的开发模型   326
14.5.3 静态视图和动态视图   327
14.5.4 使用基于流的版本控制系统做持续集成   328
14.6 主干开发  329
14.7 按发布创建分支  332
14.8 按功能特性分支  333
14.9 按团队分支  335
14.10 小结  338
第15 章 持续交付管理  340
15.1 引言   340
15.2 配置与发布管理成熟度模型  341
15.3 项目生命周期   343
15.3.1 识别阶段  344
15.3.2 启动阶段  345
15.3.3 初始阶段  346
15.3.4 开发与发布  347
15.3.5 运营阶段   349
15.4 风险管理流程   350
15.4.1 风险管理基础篇   350
15.4.2 风险管理时间轴   351
15.4.3 如何做风险管理的练习  352
15.5 常见的交付问题、症状和原因  353
15.5.1 不频繁的或充满缺陷的部署  353
15.5.2 较差的应用程序质量   354
15.5.3 缺乏管理的持续集成工作流程  355
15.5.4 较差的配置管理   355
15.6 符合度与审计  356
15.6.1 文档自动化  356
15.6.2 加强可跟踪性   357
15.6.3 在筒仓中工作   358
15.6.4 变更管理  358
15.7 小结  360
参考书目  361
· · · · · · (收起)

读后感

评分

如果你将要在一个组织中推动持续交付的改进活动,第15章“Managing Continuous Delivery”讲了几件重要的事: 1. 如何定义持续交付的目标。持续交付的最终目标应该非常简单而清晰:“Reduced cycle time. Reduced defects. Increased predictability. Determine and manage th...  

评分

自从12年,开始选型研发team的CI工具链的选项和搭建,在经过了近一年的摸索后,13年初开始全权负责公司内部的持续集成系统的流程设计和工具链的搭建,压力山大。 当时阅读了包括持续交付在内的一些技术书籍,借鉴了一些开源社区的CI体系以及工具链,Openstack社区的持续集成流...  

评分

code.flickr.com 《a pratical way to large scale agile dev》 minimum viable product 《The lean startup》 频繁发布的原因: 1. 发布用户需要的最小功能,快速反馈,容易满足用户需求; 2. 减少风险:增量小,容易发现问题。 宝马: MTBF 昂贵系统关注 吉普...  

评分

我是“好的程序员的生产力十倍于差的程序员”这句话的信奉者,由此我期望的未来会有很多人数很少但精锐的小的软件开发组织存在。要在这样的未来生存,需要把一切能够自动化的事务都自动化,让宝贵的智力专注在最有价值的业务上。 同时作为一个在大型互联网公司工作过数年的开...  

评分

中文翻译比较流程,偶尔一些地方与英文不一致,可以配合英文读或者直接读原版。总的来说,值得一读。                                                                                 ...  

用户评价

评分

这本书的价值远远超出了我们通常对“技术指南”的期待,它更像是一部关于组织效率哲学的著作。我发现作者在探讨技术实践时,总是巧妙地将视角拉回到“人”和“流程”的层面。他花了大篇幅去讨论跨职能团队之间的信任建立机制,以及如何通过透明化的指标体系来消除部门间的“信息壁垒”,这对于许多在大型组织中挣扎的技术管理者来说,简直是醍醐灌顶。我记得有一个章节专门讲了“慢即是快”的辩证关系,他通过对比两种截然不同的发布节奏,清晰地论证了过度追求速度而牺牲质量所带来的长期负债。这种超越技术细节的洞察力,使得这本书即使是给非技术背景的业务决策者阅读,也能让他们理解为什么投资于基础架构的健壮性是商业竞争力的核心体现。阅读过程中,我多次停下来,反思自己团队目前的工作流中是否存在类似的“隐形浪费”,这本书提供了一种强大的批判性工具。

评分

这本书真是让人眼前一亮,从拿到手的那个瞬间起,我就被它那种沉稳又不失现代感的封面设计所吸引。内页的排版清晰得令人赞叹,即便是初次接触这个领域的新手,也能很快找到阅读的节奏。作者在引言部分就展现出一种老练的叙事功底,没有用那些晦涩难懂的专业术语来吓唬人,而是非常耐心地为你铺陈出整个技术栈的宏大图景。我特别欣赏他对历史脉络的梳理,他没有简单地罗列时间线,而是深入剖析了为什么某些工具和理念会应运而生,这让整个阅读过程充满了“原来如此”的顿悟感。比如,他对早期版本控制系统演变过程中所遇到的核心矛盾的描述,简直是教科书级别的分析,让我对现代DevOps思想的产生有了更深层次的理解。他似乎懂得如何将复杂的概念“碎片化”处理,然后用非常生活化的比喻将它们重新组合起来,让抽象的技术概念变得触手可及。这本书的结构安排也极为巧妙,每一个章节的衔接都如同精心编排的乐章,让人忍不住想一口气读完,去探究下一个转折点会带来什么新的洞见。

评分

说实话,我一直以为自己对这个领域已经有了一个比较全面的认识,但这本书的出现彻底颠覆了我的认知。它最让人震撼的地方在于其前瞻性,它不仅回顾了过去,更重要的是,它大胆地描绘了未来五年内行业可能面临的技术拐点。作者对于新兴技术如Serverless架构和边缘计算如何与现有的部署流水线深度融合的探讨,充满了令人兴奋的想象力,但这种想象力又建立在极其扎实的工程学基础之上,丝毫没有浮夸感。他给出的未来蓝图是具体可感的,而不是空泛的口号。我印象最深的是他对“可观测性”的阐述,他将Metrics, Logs, Traces这三驾马车之间的相互作用描绘得如同一个精密的瑞士钟表,每一个齿轮都缺一不可,并且详细讲解了如何设计一个能够自我修复的反馈闭环。读完之后,我感觉自己的知识体系被“重构”了一遍,原本零散的知识点被串联成了一张坚固、富有弹性的网。

评分

读完这本书,我最大的感受是那种知识密度与阅读流畅度达到了惊人的平衡。很多技术书籍读起来就像是在啃干巴巴的理论,需要反复回味才能消化吸收,但这本书完全不是。作者的笔触极其细腻,他似乎总能找到最精准的那个词汇来描述一个微妙的技术状态。例如,当他谈到自动化测试的“黄金分割点”时,他没有给出僵硬的比例数字,而是用一套基于团队成熟度和项目风险的动态评估框架来指导读者,这体现了极高的实战经验。我特别喜欢他在案例分析部分所采用的“手术刀式”解剖方法,他会选取一个看似普通的部署失败场景,然后层层剥开背后的配置陷阱、环境漂移和沟通壁垒,最后给出一个结构化的解决方案,逻辑严密得让人叹服。这本书的价值不在于教你敲下某一行命令,而在于帮你建立起一套完整的、系统的、面向未来的思维模型。它更像是一本“方法论圣经”,指导你如何在不确定的技术环境中保持清醒的头脑和高效的产出。

评分

这本书的语言风格是那种极其克制而又充满力量的混合体。它没有使用花哨的修辞,全篇洋溢着一种“以结果为导向”的务实精神。阅读体验上,它非常注重读者的主动参与性,每当介绍完一个核心概念后,作者都会设置一些需要读者思考的“停顿点”,比如“请思考,在你的当前架构中,哪一步的延迟对用户体验影响最大?”这种互动性极强,让我感觉不像是在被动接收信息,而是在与一位经验丰富的导师进行一对一的深度研讨。此外,书中对各种工具的引用也极其精妙,它不是简单地推荐A胜过B,而是详细对比了它们在特定约束条件下的性能权衡,教会读者如何根据自己的实际约束做出最佳选择,而不是盲目追逐技术热点。这种对“情境依赖性”的强调,是许多同类书籍所缺乏的成熟视角,也正是这本书能真正指导实践,而非沦为纸上谈兵的关键所在。

评分

幸好不是自己买的,89人刀的价格真不人道

评分

一直在实践一直在推广。

评分

幸好不是自己买的,89人刀的价格真不人道

评分

看不懂。

评分

南图

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2026 book.wenda123.org All Rights Reserved. 图书目录大全 版权所有