在好例子网,分享、交流、成长!
您当前所在位置:首页Config 开发实例其他配置 → 持续交付:发布可靠软件的系统方法.pdf

持续交付:发布可靠软件的系统方法.pdf

其他配置

下载此实例
  • 开发语言:Config
  • 实例大小:15.68M
  • 下载次数:18
  • 浏览次数:67
  • 发布时间:2021-09-09
  • 实例类别:其他配置
  • 发 布 人:feixingzhe
  • 文件格式:.pdf
  • 所需积分:2
 相关标签: 发布 方法 软件 系统

实例介绍

【实例简介】

【实例截图】

from clipboard

【核心代码】

目 录
第一部分 基础篇
第 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
图灵社区会员 ChenyangGao(2339083510@qq.com) 专享 尊重版权
2 目 录
第 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 
目 录
1
3
5
7
9
11
14
15
13
2
4
6
8
10
12
3
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 
4 目 录
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 
目 录
1
3
5
7
9
11
14
15
13
2
4
6
8
10
12
5
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 
6 目 录
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

实例下载地址

持续交付:发布可靠软件的系统方法.pdf

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警