该书作者为Jez Humble和David Farley,内容主要为讲述如何更快、更可靠、低成本的自动化软件交付,如何通过增加反馈及团队之间的协作来实现自动化软件交付。其中主要的三大部分为:持续交付的原则,部署流水线,以及部署流水线的投入细节。 <br />
在第一章作者讲述了软件交付的问题,从四个方面进行了具体分析:
常见的发布反模式
1.手工部署软件
许多组织都使用手工方式发布软件,这样很容易出现人为错误,也会导致发布时间变长、发布结果不可测、效率降低。
2.开发完成后向类生产环境部署
团队在部署前沟通协作过少,导致部署过程经常出现各种棘手问题,增加工作量,延长发布周期,降低工作效率。
3.生产环境的手工配置
重复地创建应用程序所依赖的每个基础设施无疑会浪费人力物力财力,而且在部署过程出错时,无法进行回滚操作。
如何实现自动化软件交付
1.每次修改都触发反馈流程
每当修改源代码后,都要进行构建和测试,每一次变更都要以自动化方式尽可能地被测试,比如检测软件的单元测试是否成功、软件是否满足一定的质量标准等方面,保证环境的任何修改都不会影响应用程序的正常运行。
2.尽快接受反馈
在整个流水线中的提交阶段,其测试应具有这几个特征:运行速度快,测试尽可能全面,不能发布有问题的应用程序,做到环境中立。成功的测试代表好的结果,这就要求有全面的自动化测试套件进行快速的反馈。
3.交付团队必须接受反馈并作出反应
参与软件交付的所有人都应参与到反馈流程中,做到信息及时化,保证工作效率。
收效
1.授权团队
部署流水线使部署变得灵活,能够轻松将任意版本的软件部署到任意环境,这无疑会使团队协作更加高效,减少无用繁琐的工作。
2,减少错误
不再依赖手工配置,避免重复性的工作,而且通过机器我们能更快知道出现问题的具体原因以及所在。
3.缓解压力
这点听上去确实有诱惑力,自动化使得部署发布不再变成令人压力山大的工作,给项目及团队带来的好处都是不可限量的。
软件交付原则
1.为软件的发布创建一个可重复且可靠的过程
2.将所有事情自动化
3.把所有东西纳入版本控制
4.提前并频繁的让你做痛苦的事情
5.内建质量
越早发现缺陷,修复它们的成本越低。
6.“DONE”意味着“已发布”
7.交付过程使每个成员的责任
8.持续改进
感想
自动化软件交付带来的益处确实是不可估量的,相当于颠覆了整个传统的手工发布过程,实现之后不论哪个方面都会得到提高,而其也在告诉我们软件发布前及过程中碰到的问题如何去解决并完善,自动化是一个大的方向,我们应该向其慢慢靠拢。