6 Ways the Cloud Enhances Agile Software Development
Cloud computing and virtualization let you create virtual machines and use of cloud-based services for project management, issue management and software builds with automated testing. This, in turn, encourages agile development in six key ways.
Mon, August 20, 2012
CIO — The Commonwealth Bank, one of Australia's leading providers of integrated financial services, has set up a private cloud that runs internal applications as a service. These applications use more than 300 Oracle databases, all of which have been consolidated into on-demand Oracle instances that can be provisioned very quickly by application development teams within a browser interface. This has reduced the lead time for development teams at the Commonwealth Bank provisioning a production quality environment from three months to two minutes.
Meanwhile, Salesforce.com R&D leverages cloud computing to vastly speed up release cycles. Major releases come every quarter, but incremental improvements are added in monthly, weekly and even daily builds. The company's cloud infrastructure helps it maintain a single, unified code base that geographically distributed development teams can use. Those teams are successfully combining agile development and continuous integration/delivery with cloud computing.
Commentary: Is Your Cloud Project Ready to be Agile?
The Commonwealth Bank and Salesforce.com R&D are only two examples of how agile software development teams are using cloud computing to accelerate development operations and achieve efficiency and effectiveness. Cloud computing and virtualization make it easy for agile development teams to seamlessly combine multiple development, test and production environments with other cloud services.
Here are six important ways cloud computing and virtualization enhance agile software development.
1. Cloud Computing Provides an Unlimited Number of Testing and Staging Servers.
When agile development is used without virtualization or clouds, development teams are limited to one physical server per development, staging and production server need. However, when virtual machines or cloud instances are used, development teams have practically an unlimited number of servers available to them. They do not need to wait for physical servers to become free to begin or continue their work.
2. It Turns Agile Development Into a Truly Parallel Activity.
You may use agile development but still experience delays in provisioning server instances and in installing necessary underlying platforms such as database software. Just as the Commonwealth Bank reduced the provisioning of an Oracle database from three months to two minutes, agile development teams can provision the servers they need quickly themselves, rather than wait for IT operations to do it for them.
Although an agile methodology aims to squeeze all the inefficiencies and delays out of software development, in practice it becomes a serial activity. Cloud computing can push it toward becoming a more parallel activity than it once was. This leads to more efficient, more effective and better utilized agile software development teams.
3. It Encourages Innovation and Experimentation.
Being able to spawn as many instances as needed enables agile development groups to innovate. If a feature or a story looks interesting, a team can spawn a development instance quickly to code it and test it out. There's no need to wait for the next build or release, as is the case when a limited number of physical servers are available. When adding cloud computing to agile development, builds are faster and less painful, which encourages experimentation.