Five Steps to Agile Development in the Cloud
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.
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.
Step 3: Collaborate on complex bugs and fix them faster.
We all dread the phrase, “but it works on my machine.” This problem is only exacerbated when teams are scattered across the globe and the back-and-forth work on issues results in the loss of serious time and money for the developers and ultimately the business. Rather than allowing for complex bugs or fixes to jump from one person to another, dev/test teams can utilize the cloud to collaborate in real time and resolve these issues at a faster pace.
Cloud solutions that enable “VM publishing” and “over the shoulder view” enable remote teams to work together using the same online environment, where troubleshooting and bug fixes can happen in real time. As discussed, Step 2 also allows the provisioning of numerous environments to safeguard test teams from being blocked from a release, and allows testers to access the live reproduction of an issue for immediate review.
Step 4: Share new releases with customers.
The sooner an issue or bug is identified during the creation of an application, the better. It’s also much cheaper and easier to resolve bugs and design issues early on in the process. Cloud solutions that enable you to share new releases with a small, target group of customers enable you to leverage “extra eyes” and is very useful for identifying defects or issues early on.
In the “old school” model, customers are typically invited to the developer’s location as the product can be easily set up by the team, rather than by the end-user. There are two issues with this approach:
- Customers often don’t want to travel to provide their input.
- Provisioning beta versions of the application for a large group of customers can be challenging.
Using the cloud allows for unconstrained scale as applications can be made available anywhere there’s an internet connection, at any time. Developers can provision numerous copies of an application to share with any number of customers. If a cloud solution provided “over the shoulder” viewing capabilities, developers could view each customer’s interaction with the product while capturing any issues via a screenshot — all from the comfort of their own machine. Once the customer evaluation is completed, developers can use the cloud resources for an alternate activity.
This new model will reduce the time and cost of collecting customer input early on. More importantly, customers will perceive the use of the cloud model as an innovative step the dev/test teams have taken to solve their problem faster. This builds additional confidence equity that will pay dividends over time.
Step 5: Automate the creation of “hotfix” repro for customer issues to get support, development, test and operations teams on the same page.
Once a product ships, a developer’s job is over, right? Wrong. The lifecycle of an application far surpasses its release date. A company must still support users on earlier versions of a product, even though many customers have moved to the latest and greatest build. By utilizing the cloud, this process can be much more efficient as the test/SE teams can reproduce older versions using Steps 1-2, reproduce the issue at hand rather than the current state using Step 3, and validate the fix with the customer with Step 4.
Cloud computing offers the scale, access and ease of use essential to creating a highly efficient dev/test process. By following these steps from start to finish, developers and testers have the tools and tips they need to power Agile development in the cloud and create a closed loop feedback cycle that includes customers. Much like great musicians that constantly fine-tune and improve their instruments and composition, innovative dev/test teams can ship great quality software on time and under budget by leveraging the right cloud solution.
Sumit Mehrotra, Director of Product Management – Skytap