欢迎来到天天文库
浏览记录
ID:33504804
大小:1.01 MB
页数:35页
时间:2019-02-26
《持续交付--软件开发》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、2第1章软件交付的问题第1章软件交付的问题1.1引言作为软件从业人员,我们面临的最重要问题就是,如果有人想到了一个好点子,我们如何以最快的速度将它交付给用户?本书将给出这个问题的答案。我们将专注于构建、部署、测试和发布过程,因为相对于软件生产全过程的其他环节来说,这部分内容的论著较为稀少。确切地说,我们并不认为软件开发方法不重要,如果没有对软件生命周期中其他方面的关注,只把它们作为全部问题的次要因素草率对待的话,就不可能实现可靠、迅速且低风险的软件发布,无法以高效的方式将我们的劳动成果交到用户手中。现在有很多种软件开发方法,但它们主要关注于需求管理及其
2、对开发工作的影响。市面上也有很多优秀的书,它们详细讨论了在软件设计、开发和测试方面各种各样的方法,但它们都仅仅讲述了将软件交付给作为客户的人或组织这一完整价值流的一部分。1.1引言3一旦完成了需求定义以及方案的设计、开发和测试,我们接下来做什么?我们如1何协调这些活动,尽可能地使交付过程更加可靠有效呢?我们如何让开发人员、测试2人员,以及构建和运维人员在一起高效地工作呢?3本书描述了软件从开发到发布这一过程的有效模式。书中讲述了帮助大家实现这4种模式的技术和最佳实践,展示了它与软件交付中其他活动是如何联系的。5本书的中心模式是部署流水线。从本质上讲,部
3、署流水线就是指一个应用程序从构建、部署、测试到发布这整个过程的自动化实现。部署流水线的实现对于每个6组织都将是不同的,这取决于他们对软件发布的价值流的定义,但其背后的原则是7相同的。8部署流水线的示例如图1-1所示。9部署流水线大致的工作方式如下。对于应用程序的配置、源代码、环境或数据的每个变更都会触发创建一个新流水线实例的过程。流水线的首要步骤之一就是创建二10进制文件和安装包,而其余部分都是基于第一步的产物所做的一系列测试,用于证明11其达到了发布质量。每通过一步测试,我都会更加相信这些二进制文件、配置信息、12环境和数据所构成的特殊组合可以正常工
4、作。如果这个产品通过了所有的测试环节,13那么它就可以发布了。14154第1章软件交付的问题提交阶段编译自动化自动化手工测试单元测试验收容量演示发布分析测试测试探索性测试构建安装包图1-1一个简单的部署流水线部署流水线以持续集成过程为其理论基石,从本质上讲,它是采纳持续集成原理后的自然结果。部署流水线的目标有三个。首先,它让软件构建、部署、测试和发布过程对所有人可见,促进了合作。其次,它改善了反馈,以便在整个过程中,我们能够更早地发现并解决问题。最后,它使团队能够通过一个完全自动化的过程在任意环境上部署和发布软件的任意版本。1.2一些常见的发布反模式软
5、件发布的当天往往是紧张的一天。为什么会这样呢?对于大多数项目来说,在整个过程中,发布时的风险是比较大的。在许多软件项目中,软件发布是一个需要很多手工操作的过程。首先,由运维团队独自负责安装好该应用程序所需的操作系统环境,再把应用程序所依赖的第三方软件安装好。其次,要手工将应用程序的软件产物复制到生产主机环境,然后通过Web服务器、应用服务器或其他第三方系统的管理控制台复制或创建配置信息,再把相关的数据复制一份到环境中,最后启动应用程序。假如这是个分布式的或面向服务的应1.2一些常见的发布反模式5用程序,可能就需要一部分一部分地完成。1如上所述,发布当天
6、紧张的原因应该比较清楚了:在这个过程中有太多步骤可能2出错。假如其中有一步没有完美地执行,应用程序就无法正确地运行。一旦发生这种3情况,我们很难一下子说清楚哪里出了错,或到底是哪一步出了错。4本书其他部分将讨论如何避免这些风险,如何减少发布当天的压力,以及如何确5保每次发布的可靠性都是可预见的。在此之前,让我们先明确到底要避免哪类失败。下面列出了与可靠的发布过程相6对应的几种常见的反模式,它们在我们这个行业中屡见不鲜。71.2.1反模式:手工部署软件8对于现在的大多数应用程序来说,无论规模大小,其部署过程都比较复杂,而且9包含很多非常灵活的部分。许多组
7、织都使用手工方式发布软件,也就是说部署应用程10序所需的步骤是独立的原子性操作,由某个人或某个小组来分别执行。每个步骤里都有一些需要人为判断的事情,因此很容易发生人为错误。即便不是这样,这些步骤的11执行顺序和时机的不同也会导致结果的差异性,而这种差异性很可能给我们带来不良12后果。13这种反模式的特征如下。14有一份非常详尽的文档,该文档描述了执行步骤及每个步骤中易出错的地方。以手工测试来确认该应用程序是否运行正确。156第1章软件交付的问题在发布当天开发团队频繁地接到电话,客户要求解释部署为何会出错。在发布时,常常会修正一些在发布过程中发现
8、的问题。如果是集群环境部署,常常发现在集群中各环境的配置都不相同,比如应用服务器的连接池设置
此文档下载收益归作者所有