云计算和虚拟化可以让你创建虚拟机,并使用基于云的服务用于项目管理、问题管理和具有自动化测试的软件构建。而这又从六个方面鼓励了敏捷软件开发。
澳大利亚综合金融服务领先供应商之一澳洲联邦银行(Commonwealth Bank)建立了一个私有云来运行内部应用程序作为服务。这些应用程序使用超过300个Oracle数据库,这些数据库都被合并到按需Oracle实例中,而该实例可以由浏览器界面内的应用程序开发团队进行非常迅速的配置。这使开发团队配置生产质量环境的准备时间从三个月缩减到两分钟。
同时,Salesforce.com R&D利用云计算显著加快了其产品发布周期。该公司每个季度会发布一个主要产品,但每个月、每周甚至每天都需要添加渐进式改进。该公司的云基础设施帮助其建立了一个单一的统一代码库,让位于不同地理位置的开发团队都可以使用。这些团队成功地将敏捷开发和持续集成/交付与云计算结合在一起。
联邦银行和Salesforce.com R&D只是两个例子,向我们展示了敏捷软件开发团队如何使用云计算来加快开发操作和实现效率与效益。云计算和虚拟化让敏捷开发团队可以无缝地将多个开发、测试和生产环境与其他云服务相结合。#p#
以下云计算和虚拟化帮助提高敏捷软件开发的六个重要方面:
1.云计算提供无限数量的测试和开发用服务器
在敏捷开发没有“遇到”虚拟化或云计算之前,开发团队受限于一台物理服务器,来满足其开发和生产服务器的需求。然而,在使用虚拟机或云实例后,开发团队拥有无限数量的服务器。他们不需要等待物理服务器空闲时才开始或继续他们的工作。
2.使敏捷开发转变成真正并行的活动
你可能在使用敏捷开发的同时,在配置服务器实例和安装必要的底层平台(例如数据库软件)时仍然遭遇延迟现象。正如联邦银行将配置Oracle数据库的时间从三个月缩减到两分钟,敏捷开发团队可以自己快速地配置所需的服务器,而不是等待IT运营来为他们配置。
虽然敏捷开发办法旨在消除软件开发过程中的低效率和延迟,在实践中,它变成一个串行活动,而云计算可以将其变成一个并行活动。这将帮助敏捷软件开发团队提高效率和效益。
3.鼓励创新和实验
能够根据需要产生尽可能多的实例可以帮助敏捷开发团队不断创新。如果一个功能看起来很不错,团队可以迅速产生一个开发实例来编码并测试它,而不需要等待下一个产品发布。当添加云计算到敏捷开发时,软件构建更加快速,这也将鼓励创新和实验。
4.加强了持续集成和交付
如前所述,云实例和虚拟化能够大大提高持续集成和交付。构建和自动化测试需要花一段时间。敏捷开发团队可能随后需要为在自动化测试期间失败的测试修复代码,在所有测试通过之前,他们需要反复这样修复代码。
在敏捷开发团队自己的云环境或者公共云中,拥有大量虚拟机可以提高持续集成和交付的速度。
5.带来更多开发平台和外部服务
敏捷开发团队可能需要使用各种不同的项目管理、问题管理以及自动化测试环境(如果使用持续集成的话)。很多这些服务都在云中作为软件即服务(SaaS)。
· 敏捷开发可以使用虚拟化、私有云和基础设施即服务水平的公共云的结合体。这种产品包括Amazon网络服务、GoGrid、opSource和RackSpace Cloud。
· 然后是使用平台即服务(PaaS)实例,例如Oracle数据库云服务、Google App Engine和Salesforce.com平台force.com,所有这些都包含数据库和语言环境作为服务。
· ***,还有一些专门针对敏捷开发的SaaS服务,包括Salesforce.com、Basecamp项目管理门户和TestFlight,为Apple iOS设备提供托管测试自动化。
6.简化代码分支与合并
从理论上讲,敏捷开发是假设所有功能都可以被分解成大小相同的区块。在实践中,敏捷项目可能会遇到这样的功能,即其开发工作要比构建甚至发布的时间还要长。在代码重构工作中,当前版本可能需要小的改进并用于生产过程中,而代码的重新设计仍然在进行中。在这种情况下,代码分支是很有必要的。代码分支和合并设计开发和升级构建的很多版本,而通过虚拟化和云计算,你不需要为这些目的购买或租用额外的物理服务器。
总体而言,虚拟化和云计算消除了测试和开发服务器对物理服务器的依赖,无论它们是只安装了一个操作系统的虚拟机,还是具有数据库软件、语言或代码库的完整配置的服务器。如果敏捷团队打算采用持续集成和交付方法的话,虚拟化和云计算也是必不可少的。此外,虚拟化和云计算通过消除配置中的延误,让敏捷开发转变成并行活动,而不是串行活动。企业可以更好地将创新开发项目与业务目标相结合。