
开本:16开 |
纸张:胶版纸 |
包装:平装-胶订 |
是否套装:否 |
国际标准书号ISBN:9787302679219 |
所属分类:图书>计算机/网络>计算机理论 |
编辑推荐
《持续交付图解》是大型软件研发从业者经验传授的经典著作,从故事出发,利用敏捷迭代的方法将持续集成、持续构建、持续交付等复杂的概念融入全书的叙述中。难能可贵的是,这些方法均巧妙地集成到了一个创业公司不断升级打怪的故事中,作者的叙述让每位读者不仅知其然且知其所以然,我想这就是本书最难能可贵的价值。这些重要概念的上下文才是诸位看官决定是否采纳,以及如何采纳那些当下流行技术词汇的重要依据。内容简介
请让你的代码库随时保持可发布状态。持续交付流水线可以实现自动化版本控制、自动测试和自动部署,将开发人员的干预降至最低。掌握持续交付的工具和实践,你将能够快速且一致地添加功能和推送更新。
《持续交付图解》是建立和使用持续交付流水线的友好指南。每一章都介绍了在设置系统时将面临的不同场景,包括自动扩展和测试遗留应用程序等现实问题的示例。作者 采用与具体工具无关的方法,通过插图、清晰的解释和实践练习来指导你的每一步学习。
主要内容
?为新项目和遗留项目设计有效的流水线
?确保你的流水线在适当的时候发出正确的信号
?将版本控制作为真相的来源
?安全地自动化部署
目 录
第Ⅰ部分 持续交付入门
第章 欢迎阅读本书
你需要持续交付吗
为什么要持续交付
持续交付
集成
持续集成
我们能交付什么
交付
持续交付持续部署
持续交付的要素
结论
本章小结
接下来……第Ⅰ部分 持续交付入门
第章 欢迎阅读本书
你需要持续交付吗
为什么要持续交付
持续交付
集成
持续集成
我们能交付什么
交付
持续交付持续部署
持续交付的要素
结论
本章小结
接下来……
第章 基础流水线
猫咪图片网站
猫咪图片网站源码
猫咪图片网站流水线
什么是流水线,什么是任务
流水线中的基础任务
门禁与转换
:门禁机制与转换
猫咪图片网站服务流水线
运行流水线
每天都运行一次
尝试持续集成
使用通知
拓展手动工作
通过自动化
拓展
在流水线出现问题时不要提交代码变更
猫咪图片网站的
名称中的学问
结论
本章小结
接下来……
第Ⅱ部分 让软件一直保持在可交付状态
第章 版本控制是发布软件的唯一方式
和的创业
所有类型的数据
源码与软件
代码库和版本
持续交付和版本控制
和
第一次代码提交——出错啦
主分支出错
推送与拉取
我们在进行持续交付吗
让版本控制系统保持可发布状态
代码变更提交到版本控制系统时的触发器
触发用户服务流水线
构建用户服务
云端的用户服务
连接数据库
管理用户服务
用户服务宕机
被自动化打败
什么是可信代码源
用户服务的配置即代码
配置
配置即代码
发布软件与配置变更
结论
本章小结
接下来……
第章 有效使用静态代码检查
和超级游戏控制台
采用静态代码检查解决问题
关于静态代码检查的内幕
的故事和很多问题
遗留代码:使用系统化方法
第步:根据编码规范进行配置
第步:建立基线
第步:在提交时强制执行
向流水线添加强制执行
第步:分而治之
隔离:不是所有问题都应该修复
强制隔离
并非所有问题都同等重要
静态代码检查问题的类型
缺陷优先,风格其后
克服重重障碍
结论
本章小结
接下来……
第章 处理有噪声的测试
持续交付和测试
“全民冰淇淋”停机事件
信号与噪声
噪声的成功
失败是如何变成噪声的
从噪声到信号
让测试通过变绿
又一次停机
通过测试仍然可能会有噪声
修复测试失败
失败的方式:脆弱的测试
对失败做出反应
修复测试:修改代码或测试
重试的危险
重试重新访问
为什么要重试
变绿并保持绿色
结论
本章小结
接下来……
第章 让那些缓慢的测试套件变得更快
狗狗图片网站
当流水线过于简单时
新工程师试图提交代码
测试和持续交付
诊断:速度太慢
测试金字塔
先运行执行快的测试用例
两条流水线
获得正确的平衡
改变金字塔比例
安全地调整测试用例
测试覆盖率
强制要求测试覆盖率
流水线中的测试覆盖率
在具备覆盖率的金字塔中移动测试用例
沿着金字塔往下移动什么
遗留的测试用例和
并行运行测试用例
何时可以并行运行测试用例
更新流水线
还是太慢了
分片测试,又称并行
如何分片
更复杂的分片
分片流水线
对浏览器测试套件进行分片
流水线中的分片
狗狗图片网站的流水线
结论
本章小结
接下来……
第章 在正确的时间发出正确的信号
网站
代码变更的生命周期
仅在代码合并前进行的
代码变更出错的时间线
仅在合并前运行的未命中缺陷
两张图的故事:默认为天
两张图的故事:默认为天
冲突并不是总会被发现
单元测试呢
触发器仍然会让缺陷潜入
合并前以及合并后的
选项:定期运行
选项:设置定期运行的
选项:要求特性分支是最新的
选项:成本是多少
选项:自动合并
选项:使用最新的主分支运行
选项:合并事件
选项:合并队列
选项:网站的合并队列
哪里还会发生错误
测试脆弱性和触发的
通过定期测试捕获脆弱的测试
缺陷和构建
与构建和部署
使用相同的逻辑构建和部署
通过构建改进流水线
重新审视代码变更时间表
结论
本章小结
接下来……
第Ⅲ部分 让交付变得简单
第章 轻松交付从版本控制出发
回到 项目
指标
如果我不运行服务呢
与精英效能团队
给 提升速率
与集成
主干开发
特性增量式交付
跳过测试的提交
代码评审和“不完整”的代码
保持这个势头
提交不完整的代码
评审进行中的代码
与此同时,让我们回到端到端测试
可见的好处
不断缩短的变更前置时间
继续开发
部署窗口和代码冻结
速率提高
结论
本章小结
接下来……
第章 安全可靠的构建
当构建流程仅仅记录在文档中时
安全和可靠构建的属性
始终可发布
自动化构建
构建即代码
使用服务
临时构建环境
的计划
从纯文档到拥有版本控制的脚本
自动化容器化构建
安全和可靠的构建流程
接口的变更和导致的缺陷
当构建产生缺陷时
构建与沟通
语义化版本控制
版本控制的重要性
又一次故障!
构建时依赖导致的错误
锁定依赖项版本
仅仅锁定版本还不足够
锁定哈希值
结论
本章小结
接下来……
第章 可信赖的部署
部署困扰不断
的稳定性指标
的指标
减少部署频率吗
增加部署频率吗
每日部署与故障
增加部署频率的步骤
修复流程中的问题
滚动更新
通过滚动更新修复缺陷
回滚
回滚策略 即时改善
回滚策略实战
蓝绿部署
使用蓝绿部署加速故障恢复时间
金丝雀发布更快且更稳定
金丝雀部署的前提条件
金丝雀发布的基线
金丝雀发布的服务恢复时间
增加部署频率
每日金丝雀发布策略下的指标
持续部署
使用持续部署的时机
强制性的阶段
与持续部署
精英效能团队
结论
本章小结
接下来……
第Ⅳ部分 设计持续交付
第章 启动包:从零到
启动包:概览
回顾:通用的流水线任务
典型的发布流水线
典型的流水线
两条都带触发器的流水线
绿地项目:迈向
绿地项目:从零到
第一步:它能构建吗
选择系统
建立初始的自动化
代码的状态:静态代码检查
代码的状态:单元测试
代码的状态:覆盖率
超越:发布
部署
扩展测试
集成测试和端到端测试的任务
完成流水线
完整的流水线
遗留项目:迈向
第一步:确定增量目标的优先级
首先关注痛点
的痛点
知道何时出现了问题
隔离并添加测试
具有更多测试的遗留项目流水线
使部署更加自动化
创建发布流水线
的发布流水线
的完整流水线
结论
本章小结
接下来……
第章 脚本也是代码
的问题
的概览
支付组织的脚本库
交易服务流水线
从一个大脚本演化
设计良好任务的原则
打破巨型任务
更新后的交易服务流水线
调试库
调查库的缺陷
为什么会引入这个缺陷
的作用
何时不太好
脚本与通用语言
从脚本到通用编程语言
迁移计划
从库到拥有的任务
任务内的可重用
从到
任务即代码
脚本也是代码
结论
本章小结
接下来……
第章 流水线设计
匹配服务流水线
流水线问题
端到端测试流水线
端到端测试流水线和错误
最终行为
图形化最终部分
匹配服务流水线中的最终行为
端到端测试流水线和速度
并行执行任务
端到端测试流水线和测试速度
并行执行和测试分片
带有分片的端到端测试流水线
端到端测试流水线和信号
单一流水线
发布流水线与信号
流水线的差异
合并流水线
发布流水线
发布流水线中的硬编码
通过参数化复用流水线
使用可重用的流水线
更新后的流水线
解决的问题
期待的功能
结论
本章小结
接下来……
附录
附录 系统
附录 版本控制系统
显示全部信息
作者简介
是一名软件工程师。她经常在、、、等会议上就及相关主题发表演讲。的职业生涯始于移动端应用开发。在从事游戏的后端开发时,她编写的功能通常在系统大规模发布后才会被许多人同时使用。为此,她构建了负载和系统测试平台。
凭借处理复杂部署环境、核心关键系统和应对突发流量的经验,她加入了并从事相关方向的工作。在,她为、 构建了内部生产力工具,并创建了,这是一个基于目前有家以上的公司参与构建的云原生平台。
《持续交付图解》是大型软件研发从业者经验传授的经典著作,从故事出发,利用敏捷迭代的方法将持续集成、持续构建、持续交付等复杂的概念融入全书的叙述中。难能可贵的是,这些方法均巧妙地集成到了一个创业公司不断升级打怪的故事中,作者的叙述让每位读者不仅知其然且知其所以然,我想这就是本书最难能可贵的价值。这些重要概念的上下文才是诸位看官决定是否采纳,以及如何采纳那些当下流行技术词汇的重要依据。内容简介
请让你的代码库随时保持可发布状态。持续交付流水线可以实现自动化版本控制、自动测试和自动部署,将开发人员的干预降至最低。掌握持续交付的工具和实践,你将能够快速且一致地添加功能和推送更新。
《持续交付图解》是建立和使用持续交付流水线的友好指南。每一章都介绍了在设置系统时将面临的不同场景,包括自动扩展和测试遗留应用程序等现实问题的示例。作者 采用与具体工具无关的方法,通过插图、清晰的解释和实践练习来指导你的每一步学习。
主要内容
?为新项目和遗留项目设计有效的流水线
?确保你的流水线在适当的时候发出正确的信号
?将版本控制作为真相的来源
?安全地自动化部署
目 录
第Ⅰ部分 持续交付入门
第章 欢迎阅读本书
你需要持续交付吗
为什么要持续交付
持续交付
集成
持续集成
我们能交付什么
交付
持续交付持续部署
持续交付的要素
结论
本章小结
接下来……第Ⅰ部分 持续交付入门
第章 欢迎阅读本书
你需要持续交付吗
为什么要持续交付
持续交付
集成
持续集成
我们能交付什么
交付
持续交付持续部署
持续交付的要素
结论
本章小结
接下来……
第章 基础流水线
猫咪图片网站
猫咪图片网站源码
猫咪图片网站流水线
什么是流水线,什么是任务
流水线中的基础任务
门禁与转换
:门禁机制与转换
猫咪图片网站服务流水线
运行流水线
每天都运行一次
尝试持续集成
使用通知
拓展手动工作
通过自动化
拓展
在流水线出现问题时不要提交代码变更
猫咪图片网站的
名称中的学问
结论
本章小结
接下来……
第Ⅱ部分 让软件一直保持在可交付状态
第章 版本控制是发布软件的唯一方式
和的创业
所有类型的数据
源码与软件
代码库和版本
持续交付和版本控制
和
第一次代码提交——出错啦
主分支出错
推送与拉取
我们在进行持续交付吗
让版本控制系统保持可发布状态
代码变更提交到版本控制系统时的触发器
触发用户服务流水线
构建用户服务
云端的用户服务
连接数据库
管理用户服务
用户服务宕机
被自动化打败
什么是可信代码源
用户服务的配置即代码
配置
配置即代码
发布软件与配置变更
结论
本章小结
接下来……
第章 有效使用静态代码检查
和超级游戏控制台
采用静态代码检查解决问题
关于静态代码检查的内幕
的故事和很多问题
遗留代码:使用系统化方法
第步:根据编码规范进行配置
第步:建立基线
第步:在提交时强制执行
向流水线添加强制执行
第步:分而治之
隔离:不是所有问题都应该修复
强制隔离
并非所有问题都同等重要
静态代码检查问题的类型
缺陷优先,风格其后
克服重重障碍
结论
本章小结
接下来……
第章 处理有噪声的测试
持续交付和测试
“全民冰淇淋”停机事件
信号与噪声
噪声的成功
失败是如何变成噪声的
从噪声到信号
让测试通过变绿
又一次停机
通过测试仍然可能会有噪声
修复测试失败
失败的方式:脆弱的测试
对失败做出反应
修复测试:修改代码或测试
重试的危险
重试重新访问
为什么要重试
变绿并保持绿色
结论
本章小结
接下来……
第章 让那些缓慢的测试套件变得更快
狗狗图片网站
当流水线过于简单时
新工程师试图提交代码
测试和持续交付
诊断:速度太慢
测试金字塔
先运行执行快的测试用例
两条流水线
获得正确的平衡
改变金字塔比例
安全地调整测试用例
测试覆盖率
强制要求测试覆盖率
流水线中的测试覆盖率
在具备覆盖率的金字塔中移动测试用例
沿着金字塔往下移动什么
遗留的测试用例和
并行运行测试用例
何时可以并行运行测试用例
更新流水线
还是太慢了
分片测试,又称并行
如何分片
更复杂的分片
分片流水线
对浏览器测试套件进行分片
流水线中的分片
狗狗图片网站的流水线
结论
本章小结
接下来……
第章 在正确的时间发出正确的信号
网站
代码变更的生命周期
仅在代码合并前进行的
代码变更出错的时间线
仅在合并前运行的未命中缺陷
两张图的故事:默认为天
两张图的故事:默认为天
冲突并不是总会被发现
单元测试呢
触发器仍然会让缺陷潜入
合并前以及合并后的
选项:定期运行
选项:设置定期运行的
选项:要求特性分支是最新的
选项:成本是多少
选项:自动合并
选项:使用最新的主分支运行
选项:合并事件
选项:合并队列
选项:网站的合并队列
哪里还会发生错误
测试脆弱性和触发的
通过定期测试捕获脆弱的测试
缺陷和构建
与构建和部署
使用相同的逻辑构建和部署
通过构建改进流水线
重新审视代码变更时间表
结论
本章小结
接下来……
第Ⅲ部分 让交付变得简单
第章 轻松交付从版本控制出发
回到 项目
指标
如果我不运行服务呢
与精英效能团队
给 提升速率
与集成
主干开发
特性增量式交付
跳过测试的提交
代码评审和“不完整”的代码
保持这个势头
提交不完整的代码
评审进行中的代码
与此同时,让我们回到端到端测试
可见的好处
不断缩短的变更前置时间
继续开发
部署窗口和代码冻结
速率提高
结论
本章小结
接下来……
第章 安全可靠的构建
当构建流程仅仅记录在文档中时
安全和可靠构建的属性
始终可发布
自动化构建
构建即代码
使用服务
临时构建环境
的计划
从纯文档到拥有版本控制的脚本
自动化容器化构建
安全和可靠的构建流程
接口的变更和导致的缺陷
当构建产生缺陷时
构建与沟通
语义化版本控制
版本控制的重要性
又一次故障!
构建时依赖导致的错误
锁定依赖项版本
仅仅锁定版本还不足够
锁定哈希值
结论
本章小结
接下来……
第章 可信赖的部署
部署困扰不断
的稳定性指标
的指标
减少部署频率吗
增加部署频率吗
每日部署与故障
增加部署频率的步骤
修复流程中的问题
滚动更新
通过滚动更新修复缺陷
回滚
回滚策略 即时改善
回滚策略实战
蓝绿部署
使用蓝绿部署加速故障恢复时间
金丝雀发布更快且更稳定
金丝雀部署的前提条件
金丝雀发布的基线
金丝雀发布的服务恢复时间
增加部署频率
每日金丝雀发布策略下的指标
持续部署
使用持续部署的时机
强制性的阶段
与持续部署
精英效能团队
结论
本章小结
接下来……
第Ⅳ部分 设计持续交付
第章 启动包:从零到
启动包:概览
回顾:通用的流水线任务
典型的发布流水线
典型的流水线
两条都带触发器的流水线
绿地项目:迈向
绿地项目:从零到
第一步:它能构建吗
选择系统
建立初始的自动化
代码的状态:静态代码检查
代码的状态:单元测试
代码的状态:覆盖率
超越:发布
部署
扩展测试
集成测试和端到端测试的任务
完成流水线
完整的流水线
遗留项目:迈向
第一步:确定增量目标的优先级
首先关注痛点
的痛点
知道何时出现了问题
隔离并添加测试
具有更多测试的遗留项目流水线
使部署更加自动化
创建发布流水线
的发布流水线
的完整流水线
结论
本章小结
接下来……
第章 脚本也是代码
的问题
的概览
支付组织的脚本库
交易服务流水线
从一个大脚本演化
设计良好任务的原则
打破巨型任务
更新后的交易服务流水线
调试库
调查库的缺陷
为什么会引入这个缺陷
的作用
何时不太好
脚本与通用语言
从脚本到通用编程语言
迁移计划
从库到拥有的任务
任务内的可重用
从到
任务即代码
脚本也是代码
结论
本章小结
接下来……
第章 流水线设计
匹配服务流水线
流水线问题
端到端测试流水线
端到端测试流水线和错误
最终行为
图形化最终部分
匹配服务流水线中的最终行为
端到端测试流水线和速度
并行执行任务
端到端测试流水线和测试速度
并行执行和测试分片
带有分片的端到端测试流水线
端到端测试流水线和信号
单一流水线
发布流水线与信号
流水线的差异
合并流水线
发布流水线
发布流水线中的硬编码
通过参数化复用流水线
使用可重用的流水线
更新后的流水线
解决的问题
期待的功能
结论
本章小结
接下来……
附录
附录 系统
附录 版本控制系统
显示全部信息
作者简介
是一名软件工程师。她经常在、、、等会议上就及相关主题发表演讲。的职业生涯始于移动端应用开发。在从事游戏的后端开发时,她编写的功能通常在系统大规模发布后才会被许多人同时使用。为此,她构建了负载和系统测试平台。
凭借处理复杂部署环境、核心关键系统和应对突发流量的经验,她加入了并从事相关方向的工作。在,她为、 构建了内部生产力工具,并创建了,这是一个基于目前有家以上的公司参与构建的云原生平台。