
本书讲述如何实现更快、更可靠、低成本的自动化软件交付,描述了如何通过增加反馈,并改进开发人员、测试人员、运维人员和项目经理之间的协作来达到这个目标。本书由三部分组成:部分阐述了持续交付背后的一些原则,以及支持这些原则的实践;二部分是本书的核心,全面讲述了部署流水线;第三部分围绕部署流水线的投入产出讨论了更多细节,包括增量开发技术、高级版本控制模式,以及基础设施、环境和数据的管理和组织治理。
本书适合所有开发人员、测试人员、运维人员和项目经理学习参考。
编辑推荐媒体推荐作者简介目录
编辑推荐
- 第21届Jolt大奖获奖作品
- Martin Fowler作序推荐
- 软件开发领域新经典
软件发布是一个令人头痛的过程,非常耗时且风险很高。本书独特而有条理地阐述了以快速、高效、可靠的方式向用户交付新功能的原则和技术实践。通过实现自动化的构建、部署和测试过程,并改进开发人员、测试人员、运维人员之间的协作,交付团队可以在几小时(甚至几分钟)内发布软件变更,而这不受项目大小和代码复杂性的影响。
本书首先给出了实现快速、可靠、低风险交付过程的基础知识,然后介绍了部署流水线,即从签入到发布的过程中管理所有变更的一个自动化过程。书中探讨了支撑持续交付的“交付生态圈”,内容涉及基础设施、数据和配置的管理,以及组织治理。
作者为我们呈现了新的技术,包括自动化的基础设施管理和数据迁移,以及虚拟化的使用,并分别探讨了各种技术中的关键问题和实践,演示了降低风险的方法。
无论是开发人员、系统管理人员、测试人员,还是经理人员,本书都能前所未有地加速你将想法变成可发布软件的步伐,为企业迅速可靠地增添价值。
媒体推荐
如果你需要频繁地部署软件,那么本书就是你所需要的。采用本书所描述的实践会帮助你降低风险,克服工作的乏味,并增强信心。我会在我所有的项目中使用本书所描述的原则与实践。
——Kent Beck,Three Rivers Institute
不管你的软件开发团队是否已经明白持续集成就像源代码控制一样必不可少,本书都是必读之物。本书不可多得地将整个开发和交付过程放在一起进行诠释,不仅提到了技术与工具,而且提供了一种理念和一些原则。作者讲述的内容从测试自动化到自动部署不一而足,能够满足读者的广泛需求。开发团队中的每个人,包括编程人员、测试人员、系统管理员、DBA和管理者,都应该读一读这本书。
——Lisa Crispin,Agile Testing: A Practical Guide for Testers and Agile Teams的作者之一
对于很多组织来说,持续交付不仅仅是一种部署方法,它对于开展业务也是至关重要的。本书展示了如何在具体环境中让持续交付成为现实。
——James Turnbull,Pulling Strings with Puppet: Configuration Management Made Easy的作者
这是一本清晰、准确、精心编写的书,力求让读者明白发布过程应该是什么样子。作者以渐进的方式一步步地阐述了软件部署中的理想状态与障碍。本书是每位软件工程师的读物。
——Leyna Cotran,加利福尼亚大学欧文分校软件研究所
Humble和Farley阐明了是什么使快速成长的Web应用取得成功。曾经颇具争议的持续部署和交付已经成为司空见惯的技术,而本书出色地讲述了其中的方方面面。在很多层面上,这都是开发和运维的交点,而他们正是瞄准了这一点。
——John Allspaw, Etsy.com技术运营副总裁,The Art of Capacity Planning和Web Operations的作者
如果你的业务就是构建和交付基于软件的服务,你一定会从本书清晰阐述的理念中受益。而且,除了这些理念以外,Humble和Farley还为快速可靠地进行软件变更提供了一份的“剧本”。
——Damon Edwards,DTO Solutions总裁,dev2ops.org网站主编之一
我相信,做软件的人拿起这本书,翻到任意一章,都会很快得到有价值的信息。如果从头到尾仔细阅读,你就能根据所在组织的具体情况对构建和部署过程进行简化。我认为,这是一本关于软件构建、部署、测试和发布的手册。
——Sarah Edrie,哈佛商学院质量工程总监
对于现代软件团队来说,显然持续交付就是持续集成的下一步。本书以不断为客户提供有价值的软件为目标,通过一套明确且有效的原则和做法使这一目标的实现成为了可能。
——Rob Sanheim,Relevance公司技术骨干
谨以此书献给我的父亲,他总是给予我无条件的爱与支持。
——Jez
谨以此书献给我的父亲,他一直为我指明正确的方向。
——David
作者简介
作者:[英] 杰斯·亨布尔(Jez Humble)大卫?法利(David Farley) 译者:无
Jez Humble ThoughtWorks公司首席咨询顾问,致力于帮助企业快速、可靠地交付高质量软件,经常在各种敏捷技术大会上发表演讲,拥有牛津大学物理学学士学位和伦敦大学民族音乐学硕士学位。2000年至今,他曾在各行业和不同技术领域担任系统管理员、开发人员、培训人员、咨询师和经理人员。
David Farley 具有20多年的大型分布式系统开发经验,是采用敏捷开发技术的先行者,曾作为技术负责人参加了ThoughtWorks公司许多极具挑战性的软件项目。目前帮助构建伦敦多项金融衍生品交易所(London Multi-Asset Exchange,LMAE)。
目录
目录
Part I: Foundations / 基础篇 1
Chapter 1: The Problem of Delivering Software / 软件交付的问题 3
Introduction / 引言 3
Some Common Release Antipatterns / 一些常见的发布反模式 4
Antipattern: Deploying Software Manually / 反模式:手工部署软件 5
Antipattern:Deploying to a Production-like Environment Only after Development Is Complete / 反模式:开发完成之后才向类生产环境部署 7
Antipattern: Manual Configuration Management ofProduction Environments / 反模式:生产环境的手工配置管理 9
Can We Do Better? / 我们能做得更好吗 10
How Do We Achieve Our Goal? / 如何实现目标 11
Every Change Should Trigger the Feedback Process/ 每次修改都应该触发反馈流程 13
The Feedback Must Be Received as Soon as Possible/必须尽快接收反馈/14
The Delivery Team Must Receive Feedback and Then Act on It/ 交付团队必须接收反馈并作出反应 15
Does This Process Scale? / 这个流程可以推广吗 16
What Are the Benefits? / 收效 17
Empowering Teams / 授权团队 17
Reducing Errors / 减少错误 18
Lowering Stress / 缓解压力 20
Deployment Flexibility / 部署的灵活性 21
Practice Makes Perfect / 多加练习,使其完美 22
The Release Candidate / 候选发布版本 22
Every Check-in Leads to a Potential Release 23
Principles of Software Delivery / 软件交付的原则 24
Create a Repeatable,Reliable Process for Releasing Software / 为软件的发布创建一个可重复且可靠的过程 24
Automate Almost Everything / 将几乎所有事情自动化 25
Keep Everything in Version Control / 把所有的东西都纳入版本控制 26
If It Hurts, Do It More Frequently, and Bring the Pain Forward / 提前并频繁地做让你感到痛苦的事 26
Build Quality In / 内建质量 27
Done Means Released / “DONE”意味着“已发布” 27
Everybody Is Responsible for the Delivery Process / 交付过程是每个成员的责任 28
Continuous Improvement / 持续改进 28
Summary / 小结 29
Chapter 2: Configuration Management / 配置管理 31
Introduction / 引言 31
Using Version Control / 使用版本控制 32
Keep Absolutely Everything in Version Control / 对所有内容进行版本控制 33
Check In Regularly to Trunk / 频繁提交代码到主干 35
Use Meaningful Commit Messages / 使用意义明显的提交注释 37
Managing Dependencies / 依赖管理 38
Managing External Libraries / 外部库文件管理 38
Managing Components / 组件管理 39
Managing Software Configuration / 软件配置管理 39
Configuration and Flexibility / 配置与灵活性 40
Types of Configuration / 配置的分类 41
Managing Application Configuration / 应用程序的配置管理 43
Managing Configuration across Applications / 跨应用的配置管理 47
Principles of Managing Application Configuration / 管理配置信息的原则 47
Managing Your Environments / 环境管理 49
Tools to Manage Environments / 环境管理的工具 53
Managing the Change Process / 变更过程管理 53
Summary / 小结 54
Chapter 3: Continuous Integration / 持续集成 55
Introduction / 引言 55
Implementing Continuous Integration / 实现持续集成 56
What You Need Before You Start / 准备工作 56
A Basic Continuous Integration System / 一个基本的持续集成系统 57
Prerequisites for Continuous Integration / 持续集成的前提条件 59
Check In Regularly / 频繁提交 59
Create a Comprehensive Automated Test Suite / 创建全面的自动化测试套件 60
Keep the Build and Test Process Short / 保持较短的构建和测试过程 60
Managing Your Development Workspace / 管理开发工作区 62
Using Continuous Integration Software / 使用持续集成软件 63
Basic Operation / 基本操作 63
Bells and Whistles / 铃声和口哨 63
Essential Practices / 必不可少的实践 66
Don’t Check In on a Broken Build / 构建失败之后不要提交新代码 66
Always Run All Commit Tests Locally before Committing, or Get Your CI Server to Do It for You / 提交前在本地运行所有的提交测试,或者让持续集成服务器完成此事 66
Wait for Commit Tests to Pass before Moving On / 等提交测试通过后再继续工作 67
Never Go Home on a Broken Build / 回家之前,构建必须处于成功状态 68
Always Be Prepared to Revert to the Previous Revision / 时刻准备着回滚到前一个版本 69
Time-Box Fixing before Reverting / 在回滚之前要规定一个修复时间 70
Don’t Comment Out Failing Tests / 不要将失败的测试注释掉 70
Take Responsibility for All Breakages That Result from Your Changes/为自己导致的问题负责70
Test-Driven Development / 测试驱动的开发 71
Suggested Practices / 推荐的实践 71
Extreme Programming (XP) Development Practices / 极限编程开发实践 71
Failing a Build for Architectural Breaches/ 若违背架构原则,就让构建失败 72
Failing the Build for Slow Tests / 若测试运行变慢,就让构建失败 73
Failing the Build for Warnings and Code Style Breaches / 若有编译警告或代码风格问题,就让测试失败73
Distributed Teams / 分布式团队 75
The Impact on Process / 对流程的影响 75
Centralized Continuous Integration / 集中式持续集成 76
Technical Issues /技
ISBN | 9787115403759 |
---|---|
出版社 | 人民邮电出版社 |
作者 | [英] 杰斯·亨布尔大卫?法利 |
尺寸 | 16 |