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.
How-To: Keep Cloud Projects Agile-and Simple
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.
4. It Enhances Continuous Integration and Delivery.
As stated, cloud instances and virtualization greatly enhance continuous integration and delivery. Builds and automated tests take time. Agile development groups may need to subsequently fix the code for tests that fail during the automated testing-and they need to do this again and again until the build passes all the tests.
Advice: Development, Testing Servers Among Enterprise Apps Right for the Public Cloud
Having a large number of virtual machines available to the agile development group in its own cloud or on the public cloud greatly enhances the speed of continuous integration and delivery.