您的位置:首页 > 其它

企业持续集成成熟度模型ECIMM (3)----部署

2010-02-04 20:33 375 查看
3.2 部署

部署是将软件移动到它被测试、被用户存取或者准备好交付给客户的过程。对于WEB应用来说,部署可能意味着在一组WEB应用服务器上安装应用程序并更新数据库或者静态内容服务器。对于一个视频游戏控制台,部署可能是在测试服务器进行安装;而产品部署则可能是生产一个ISO母盘交付给发行商。

部署工作在最初时一般都是手工进行,部署工程师一般从指定的位置获得构建结果,然后把它们移动到目标机器上并运行安装流程。手工部署过程漫长而且非常容易部署失败。工程师们常常被迫在晚上和周末进行加班以便进行高风险的产品部署或者测试部署,因为这些系统平常被测试人员所使用,不能被干扰。更糟糕的是在不同的环境中进行部署往往使用不同的过程,在一个环境中成功的部署并不能保证在其他环境中成功部署。



一个团队从完全的手工流程过渡到使用一定量的辅助脚本或者完全脚本化的过程是一个重要的改进。整个行业中,大部分的团队会有一些辅助脚本,但还是达不到完全的脚本化部署,特别是在一些受控环境下。

中级等级的团队擅长为了测试目的进行的部署,他们一般通过“一键部署”的方式以完全脚本化的部署来实现部分或者完全的测试环境部署。这样做使得部署工程师的工作负荷大大减少,并且减少了测试团队等待部署的时间。如同持续构建是中级等级的构建团队的特征一样,第一次的测试环境自动部署是部署维度在成熟度中级等级上的一个标志。通常会在成功的持续构建完成后或者每天定时的周期性的动态进行部署而不中断测试。

中级等级团队的最后一个标志是他们在规范不同环境下的部署方面进展不错。虽然可能还有一些环境的变化,或者两种类型的部署,但在生命周期早些时候建立的成功部署能够良好的预测未来的部署。对于许多团队来说,达到这个成熟度等级是他们不错的目标。

高级等级的团队则将注意力转向受控环境或者产品环境,产品部署(发布)通过“一键部署”进行,并且产品发布成功后会自动触发生成灾难恢复使用的版本。任何在内部环境中进行产品部署的团队都应该考虑达到高级等级:在所有环境中具备一个一致的部署过程,这样在进行产品发布时可以明显的减少最后时刻失败的可能性。高级等级的团队另外一个特征是能够将通过质量检查的产品完全自动的部署到测试环境中,比如一个通过测试经理批准的构建能够自动的安装到压力测试环境中。

资深等级团队则实施“持续部署”,即可以进行完全无人工干预的自动产品部署:一个构建完成后则自动部署到测试环境中。当这些通过“管道”进行时,构建在每个阶段都进行自动化的测试,当其通过所有的质量检测后,则立刻进行产品部署。某些.com程序可以在提交源代码一个小时内完成一个重要的变更发布,显然这些还需要非常成熟的自动化测试、版本回滚和监控机制。在一个快节奏的环境中,新功能的尽快部署不仅是一个核心竞争力,而且也可以缓解功能变更带来的高风险。

原文:www.urbancode.com Enterprise Continuous Integration Maturity Model(ECIMM)

翻译:OscarYang(原始发表于http://hi.baidu.com/cmmi/),转载请注明
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: