持续交付-发布可靠软件的系统方法

5星(超过95%的资源)
所需积分/C币:50 2014-03-02 01:32:14 41.43MB PDF
47
收藏 收藏
举报

书名:持续交付 作者: Jez Humble David Farley 出版社: 人民邮电 副标题: 发布可靠软件的系统方法 原作名: Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation 译者: 乔梁 出版年: 2011-10 简介: Jez Humble编著的《持续交付(发布可靠软件的系统方法)》讲述如何实现更快、更可靠、低成本的自动化软件交付,描述了如何通过增加反馈,并改进开发人员、测试人员、运维人员和项目经理之间的协作来达到这个目标。《持续交付(发布可靠软件的系统方法)》由三部分组成。第一部分阐述了持续交付背后的一些原则,以及支持这些原则的实践。第二部分是本书的核心,全面讲述了部署流水线。第三部分围绕部署流水线的投入产出讨论了更多细节,包括增量开发技术、高级版本控制模式,以及基础设施、环境和数据的管理和组织治理。 《持续交付(发布可靠软件的系统方法)》适合所有开发人员、测试人员、运维人员和项目经理学习参考。 目录: 第一部分 基础篇 第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
版权声明 Authorized translation from the English language edition, entitled Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation, 978-0-321-60191-9 by Jez Humble David Farley, published by Pearson Education, Inc publishing as Addison Wesley, Copyright C 2011 by y Pearson Education. Inc. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from Pearson Education, Inc. CHINESE SIMPLIFIED language edition published by PEARSON EDUCATION ASLA LTD and POSTS TELECOM PRESS Copyright C 2011. 本书中文筒体字版由 Pearson education asia ltd.授权人民邮电出版社独家出版。未经出版者 书面许可,不得以任何方式复制或抄袭本书内容。 本书封面贴有 Pearson education(培生教育出版集团)激光防伪标签,无标签者不得销售。 版权所有,侵权必究。 谨以此书献给我的父亲,他总是给予我无条件的爱与支持。 jez 谨以此书献给我的父亲,他一直为我指明正确的方向 -David 对本书的赞誉 如果你需要频繁地部署软件,那么本书就是你所需要的。采用本书所描述的实践 会帮助你降低风险,克服工作的乏味,并增强信心。我会在我所有的项目中使用本书 所描述的原则与实践。 Kent beck,三川研究室 不管你的软件开发团队是否已经明白持续集成就像源代码控制一样必不可少,本 书都是必读之物。本书不可多得地将整个开发和交付过程放在一起进行诠释,不仅提 到了技术与工具,而且提供了一种理念和些原则。作者讲述的内容从测试自动化到 自动部署不一而足,能够满足读者的广泛需求。开发团队中的每个人,包括编程人员、 测试人员、系统管理员、DBA和管理者,都应该读一读这本书 -Lisa Crispin, Agile Testing: A Practical Guide for Testers and Agile Teams的作者之 对于很多组织来说,持续交付不仅仅是一种部署方法,它对于开展业务也是至关 重要的。本书展示了如何在具体环境中让持续交付成为现实。 James tumbull, Pulling Strings with Puppet: Configuration Management Made easy的作者 这是一本清昕、准确、精心编写的书,力求让读者明白发布过程究竞应该是什么 样子。作者以渐进的方式一步步地阐述了软件部署中的理想状态与障碍。本书是每位 软件工程师的必备读物。 Leyna Cωan,加利福尼亚大学欧文分校軟件研究所 Humble和 Farley阐明了是什么使快速成长的Web应用取得成功。曾经颇具争议的持 续部署和交付已经成为司空见惯的技术,而本书出色地讲述了其中的方方面面。在很 多层面上,这都是开发和运维的交点,而他们正是瞄准了这一点。 Johnallspaw,Etsy.com技术运营副总裁 The Art ofC4 pacity planning和 b operations的作者 对本书的赞誉 如果你的业务就是构建和交付基于软件的服务,你一定会从本书清晰阐述的理念 中受益。而且,除了这些理念以外, Humble和 Farley还为快速可靠地进行软件变更提供 了一份卓越的“剧本”。 Damon Edwards, DTO Solutions总裁,dewv2 ops.org网站主编之 我相信,做软件的人拿起这本书,翻到任意一章,都会很快得到有价值的信息 如果从头到尾仔细阅读,你就能根据所在组织的具体情况对构建和部署过程进行简化。 我认为,这是一本关于软件构建,部署、测试和发布的必备手册。 Sarah eerie,哈佛商学院质量工程总监 对于现代软件团队来说,显然持续交付就是持续集成的下一步。本书以不断为客 户提供有价值的软件为目标,通过一套明确且有效的原则和做法使这一目标的实现成 为了可能。 Rob manheim, Relevance公司技术骨干 译者序 十年前,敏捷软件开发方法在国内还少有人知,现在却已渐成主流。持续集成作 为一个敏捷开发最佳实践,近年来也被广泛接受。然而,它们并没有很好地解决所谓 的“最后一公里问题”,即如何让软件从“开发完成”迅速实现“上线发布 本书的问世让这个问题有了答案。通过将敏捷和持续集成的理念应用到整个软件 生命周期中,利用各种敏捷原则与最佳实践打破了用户、交付团队及运维团队之间的 壁垒,让原本令人紧张、疲惫的软件发布过程变得轻松了,令原本枯燥易错的部署操 作巳变得只需轻点鼠标即可完成。 本书首次从业务视角阐述了持续交付的必要性,并从现实问题出发,对软件交付 过程进行了彻底的剖析,指出了各交付环节所需遵守的原则与最佳实践,列举了各种 常见的反模式。书中的案例详实,贴近生产一线,读过之后,你一定会产生强烈的 共鸣。 本书为所有人带来了曙光: 作为T部门的主管,当你发现这本书后,一定会觉得眼前豁然开朗; 作为项目经理,当你读完本书的前五章后,一定会觉得手中的项目不再令你望而 却步; 作为开发人员,当你在多个分支之间痛苦地解决着合并冲突时,本书中的配置管 理实践一定会让你觉得看到了希望; 作为测试人员,当你在各类测试间疲于奔命时,本书中的自动化测试章节一定会 令你觉得神清气爽; 作为运维人员,当你在为各类环境的维护而苦恼不休时,本书中的环境管理内容 定会让你觉得心旷神怡。 持续交付以全面的版本控制和全面自动化为核心,通过各角色的紧密合作,力图 让每个发布都变成可靠且可重复的过程。 作为Cmue的业务分析师,我暗自庆幸能和Crui队的其他成员一起见证这本书 的问世,并在 Cruise整个研发过程里采用书中的诸多实践,为本书提供了素材。 ① Cruise是 Thought Works Studios在2008年发布的一款持续集成与发布管理工具,现已更名为Gio 译者注 译者序 正因了解本书对软件行业的重大意义,在其出版之前,我就向作者之一 lez Humble 提出,希望将这本书引入中国。也正因如此,在此书芙文版出版后的短短一年内,中 文版就能与国内读者见面。同时,也感谢图灵教育以专业的态度,制订了完善的出版 计划,本书才得以尽早出版。 此外,谨以此书献给我的妻子兆霞和儿子皓天。他们的支持和鼓励让我在过去的 十个月中,利用业余时间顺利地完成了这数百页的翻译工作。 昨日获悉,本书获得了2011年Jolt图书大奖,这足以证明它值得一读。希望读完之 后,你也和我一样有所收获,并把它介绍给更多还在痛苦中艰难前行的软件从业者。 乔梁 于2011年8月 马丁·福勒序 20世纪90年代末期,我拜访了 Kent Beck,当时他正在瑞士的一家保险公司工作。 他向我介绍了他的项目,他的团队有高度的自律性,而一个很有趣的事情是每晚他们 都将软件部署到生产环境中。这种具有规律性的部署带给他们很多好处,已写好的软 件不必在部署之前无谓地等待,他们对问题和机会反应迅速,周转期很短使他们与其 业务客户及最终用户三方之间建立了更深层次的关系。 在过去10年里,我一直在 Thought Works工作。我们所做的项目有一个共同的主题, 那就是缩短从想法到可用软件之间的生产周期。我看到过很多项目案例,几乎所有项 目都在设法编短周期。尽管我们通常不会每天发布,但现在每两周发布一次却是很常 见的。 David与Jez就身处这场巨大变革之中。在他们所致力的项目中,频繁且可靠地进行 交付已然成为一种文化。 David、Jez和我们的同事已经将很多每年才能做一次软件部署 的组织带到了持续交付的世界里,即让发布变成了常规活动。 至少对开发团队来说,该方法的基础是持续集成(CI)。CI使整个开发团队保持同 步,消除了集成问题引起的延期。在几年前, Paul duval写了一本关于C的书。但CI 只是第一步。软件即使被成功地集成到了代码主干上,也仍旧是没有在生产环境中发 挥作用的软件。 David:和Jez的书对从C至“最后一公里”的问题进行了阐述,描述了如 何构建部署流水线,才能将已集成的代码转变为已部署到生产环境中的软件。 这种交付思想长期以来一直是软件开发中被人遗忘的角落,是开发人员和运维团 队之间的一个黑洞。因此毫无疑问的是,本书中的技术都依赖于这些团队的凝聚,而 这也就是悄然兴起的 DevOps运动的前兆。这个过程也包括测试人员,因为测试工作也 是确保无差错发布的关键因素。贯穿一切的是高度自动化,让事情能够很快完成而且 没有差错。 为了实现这些,需要付出努力,但所带来的好处是意义深远的。持续时间长且强 度很高的发布将成为过去。软件客户能够看到一些想法快速变成他们可以毎天使用的 可工作软件。也许最重要的是,我们消除了软件开发中严重压力的一个重大来源。没 有人喜欢为了让系统升级包能够在周一的黎明前发布而在周末紧张加班。 在我看来,如果有这样一本书,能够告诉你如何做到无压力且频繁地交付软件 那么显然它是值得一读的。考虑到你们团队的利益,我希望你能同意我的观点 致谢 很多人为本书作出了贡献。特别要感谢我们的审校者 David Clack、 Leyna Cotran、 Lisa Crispin、 Sarah Edrie、 Damon Edwards, Martin Fowler、 James Kovacs、Bob Maksimchuk, Elliotte Rusty Harold、 Rob manheim和 Chris smith。同时也要感谢 Addison Wesley的编辑和制作团队,包括 Chris guzikowski、 Raina Chrobak、 Susan Zahn、 Kristy Hart 和 Andy Beaster. Dmitry Kirsanov和 Alina Kirsanova很好地完成了本书的编辑和校对工 作,并使用完全自动化的系统完成了本书的排版工作。 本书中很多想法都得益于众多同事给我们的启发,这些人包括(排名不分先后) Chris Read, Sam Newman, Dan North, Dan Worthington-Bodart, Manish Kumar, Kraig arkinson, Julian Simpson、 Paul Julius、 Marco jansen、 Jeffrey Fredrick、 Ajey Gore、 Chris Turner、 Paul hamman、胡凯、乔彦东、乔梁、杨哈达、 Julias shaw、 Deepthi、 Mark Chang、 Dante briones、李光磊、 Erik Doernenburg、 Kraig Parkinson、 Ram Narayanan、Mark Rickmeier、 Chris stevenson、 Jay Flowers、 Jason Sankey、 Daniel ostermeier、 Rolf russell Jon Tirsen、 Timothy Reaves、 Ben Wyeth, Tim Harding、 Tim Brown、 Pavan Kadambi Sudarshan、 Stephen Foreshow、 Yogi Kulkarni、 David rice、 Chad Washington、 Jonny LeRoy、 和 Chris briesemeister Jez要感谢他的妻子Rani,他的垫爱。她的鼓励让他走出了本书写作过程中的低谷。 他还要感谢他的女儿 Amrita,她的呀呀学语、拥抱和灿烂的笑容让他坚定了信心。同时, 他还要深深地感谢他在 Thought Works的同事,是他们造就了一个鼓舞人心的工作环境, 并感谢 Cyndi Mitchel和 Martin Fowler对本书的支持。最后,还要特别感谢 Jeffrey Fredrick和 Paul Julius(他们俩创建了 CITCON),以及他有机会在 CITCON遇见并与之畅 谈甚欢的人们。 David要感谢他的妻子Kate及其孩子Tom和Ben在这个项目及其他方面无尽的支 持。同时,尽管他不再就职于 Thought Works,但仍感谢它为在那里工作的人们提供了 一个开放、进取且鼓励创新的环境,并因此促成了寻求解决方案的创新型方法,而其中 很多方法又丰富了本书内容。另外,他还感谢现在的公司LMAX以及 Martin Thompson, 感谢他们的支持、信任,他们采纳了本书中所描述的技术,将其应用到了世界级高性 能计算这个具有强烈挑战性的技术环境。

...展开详情
试读 127P 持续交付-发布可靠软件的系统方法
立即下载 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
DennyWang2010 有借鉴作用,很有帮助,感谢分享
2016-11-07
回复
keta 绝对好书,持续交付方面的。
2016-09-01
回复
qingwaxw1980 很好的书,非常感谢。。。
2016-04-26
回复
jiayang_44 还不错,可以作为参考
2015-12-06
回复
luckyfeng0516 对于开发人员帮助较大,有一定的借鉴作用
2015-07-31
回复
jim8825 很不错,是软件管理 设计类型的书籍
2015-07-07
回复
wxhysoftsodc 好书,很有价值
2015-07-07
回复
vola27 不错 很有参考价值
2015-05-19
回复
rome_wu 不错的书籍,学习了
2014-12-31
回复
virtual2000 好书,收下了,
2014-11-24
回复
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
关注 私信
上传资源赚钱or赚积分
最新推荐
持续交付-发布可靠软件的系统方法 50积分/C币 立即下载
1/127
持续交付-发布可靠软件的系统方法第1页
持续交付-发布可靠软件的系统方法第2页
持续交付-发布可靠软件的系统方法第3页
持续交付-发布可靠软件的系统方法第4页
持续交付-发布可靠软件的系统方法第5页
持续交付-发布可靠软件的系统方法第6页
持续交付-发布可靠软件的系统方法第7页
持续交付-发布可靠软件的系统方法第8页
持续交付-发布可靠软件的系统方法第9页
持续交付-发布可靠软件的系统方法第10页
持续交付-发布可靠软件的系统方法第11页
持续交付-发布可靠软件的系统方法第12页
持续交付-发布可靠软件的系统方法第13页
持续交付-发布可靠软件的系统方法第14页
持续交付-发布可靠软件的系统方法第15页
持续交付-发布可靠软件的系统方法第16页
持续交付-发布可靠软件的系统方法第17页
持续交付-发布可靠软件的系统方法第18页
持续交付-发布可靠软件的系统方法第19页
持续交付-发布可靠软件的系统方法第20页

试读结束, 可继续阅读

50积分/C币 立即下载