Development and test teams are crunched for time just as much as they are crunched for resources. According to a recent survey, 'developing applications faster' is a top application delivery priority. The need for speed is amplified when employing an Agile development methodology, as the approach calls for shorter release cycles focused on specific customer problems.
In the brave new world of Agile development, development and test (dev/test) teams are challenged even further when dealing with older releases of a particular application. For example, imagine that a critical security issue surfaces in your application. In the past, dev/test teams would:
- Put the current project on hold
- Focus all resources on the old release
- Troubleshoot and fix the issue
This 'old school' approach "freezes" developer and test time as well as computing resources allocated for the current application release. The Agile development methodology adopted for the new release sometimes comes to a stop or is no longer agile.
By adopting cloud solutions for development and test, software teams can significantly reduce cycle times and lower operating costs. With the cloud model, developers and testers can create and test multiple environments instantly, parallelize development tasks, and conduct bug fixing or testing on older releases as well as new releases simultaneously.
|Editor's Note: The author, Sumit Mehrotra, is director of product management at Skytap, a provider of cloud automation solutions. We have selected this article for publication because we believe it to have objective technical merit.
Implementing Agile Software Development with the Cloud Model
How do you apply this new cloud model to your team in concert with Agile processes? Here are five practical steps:
Step 1: Use development and test "templates" for faster provisioning.
A solid product, or in our case, application, is built with basic components that possess well-defined interfaces. Like any great musician, developers are able to create masterful and innovative products by combining the key components of a stack and following a precise tune. Using this philosophy, think about creating entire application stacks as 'templates' to empower your development and test teams to create entire application stacks quickly without serious time or effort.
At the center of any cloud technology is virtualization at all levels. The template model should allow for dev/test templates consisting of virtual machines (VMs), networks, storage, installed applications, and security policies all composed as a provisioning unit.
To accomplish even faster provisioning, development and test teams can compile a library of ready-to-use templates that consist of components of an application -- for example, the application server tier, web tier or database tier -- and then combine each asset as needed to provision the entire application for a specific release. Keep in mind to stock your library with the latest versions of these components including all proper security patches applied.
Step 2: Create a 'golden version' for each release.
Along with creating VMs, building an application involves a number of difficult activities, such as identifying network connections, firewall policies, etc. Thus, provisioning an entire application can be a tedious and somewhat time-intensive task, especially when starting from scratch.
The cloud can help developers and testers to provision a complete environment or application quickly and easily. By defining the 'golden version' of each release or release milestone, developers can return to the assigned version on demand, as often as needed. Test engineers can provision multiple copies of any given release and parallelize test environments.