This post was authored by Sumit Mehrotra, director of product management at Skytap
Time. Development and test teams never have enough of it.
Now more than ever before, development and test are under constant pressure to release quality features as quickly as possible. In fact, survey results from earlier this year show that developers rank “delivering applications faster” as their number one priority, even more important than “reducing application development costs.”
How are industry leaders meeting this new “need for speed?”
They’re turning to the cloud. Leading software companies are discovering that leveraging the cloud for development and test can slash both cycle times and costs by enabling dev/test teams to quickly spin up multiple development stacks and test environments on-demand.
What’s more, this type of agile environment is proving particularly beneficial to IT teams that are also tasked with support of multiple, older versions of applications. Most of us are all too familiar with the quagmire that typically occurs when a critical security vulnerability is reported for an application. In most cases, developers need to stop work on the current release, switch resources to the previous release, fix the issue, test and deploy the new release and then, finally, switch back to the current release – a significant waste of time and resources.
By contrast, dev/test teams that work in the cloud can parallelize development and fix bugs and test on multiple versions of their application – all without requiring any changes to their initial application.
Are you curious about how the cloud can accelerate your dev/ test projects? Read on. Here is my list of the top five ways the cloud can supercharge agile development:
1. Dev/test templates streamline provisioning. Many developers combine basic components to create innovative features. The creation of ‘templates’ allow team members to quickly duplicate environments and streamline provisioning. Virtualization technology -- which is at the heart of any cloud platform --enables you to do just that, using Virtual Machines (VMs) as provisioning units.
Developers working in the cloud can easily create a library of ready-to-use VMs for components of your application (the Database tier, the Web tier and/or the Application Server tier). Then, you can combine components, as needed, to provision the entire application. Remember to keep the template library updated with the latest stable releases of all relevant components.
2. A “golden” version for each release simplifies start. Provisioning an entire application –along with creating network connections between components, defining firewall policies on connections, etc., can be a huge time sink. Without question, repeating these complex tasks at the start of each new project takes valuable time away from innovating on the application itself.
Cloud platforms eliminate this tedious repetition. The cloud enables developers to provision entire applications quickly, accurately and in a scalable fashion. Once you have defined the ‘golden’ version of each external release or each internal milestone of an application, you can use a single click to provision a copy as your development environment. Likewise, test teams can provision multiple copies of any given release to parallelize the testing effort.
3. Collaborate to resolve issues faster. During the development cycle, developers lose precious time when issues keep bouncing from one person to another because there isn’t a good reproduction (repro). This scenario, commonly known as the dreaded ‘but it works on my machine’ syndrome, is exacerbated when dev/test teams are geographically dispersed.
Working in the cloud removes the ‘back and forth.’ The cloud empowers teams to work together in the same environment in real time, where bug fixes and testing can happen iteratively. The “golden” version mentioned above allows provisioning of multiple environments, ensuring that tests teams are not blocked at any time and can still retain the live repro of issues in an environment for developers to review.
4. Customers can validate and iterate on new features throughout the dev/test process. The earlier you find issues in the development cycle, the easier and cheaper they are to fix. So, it’s extremely valuable to involve target customers throughout the development process, from the requirements stage through to beta testing. However, hosting customers for a product launch and/or provisioning instances of applications for a variety of different customers can be prohibitive.
By contrast, cloud solutions offer scale and can be accessed from anywhere in the world. Combined with reasons 1,2 and 3, the cloud allows developers to provision multiple copies of any version of an application and share them with not only customers, but also with contractors and consultants, located anywhere in the world. This type of collaboration also provides opportunities to observe the customers’ interaction with the product and to capture any issues that arise during those tests. Then, once customer validation is done, you can easily discard the resources.
5. Automated creation of “hotfix” repro for customer issues gets teams on the same page. Developers are always innovating on future versions of a product. But, the lifecycle of any product continues well beyond its release date, and dev teams often support customers on multiple versions of a product for several years. When developers working on the latest and greatest release are called upon to fix a bug in a past releases, they usually must delete their current development stack and create a development stack for the older release. Likewise, the test team needs to provision the older release of the application to effectively test the fix. Obviously, this context switch is costly in terms of time and resources.
Using cloud platforms and the methods outlined in 1-4 (above), you can make this process much more efficient. The test/SE team can automatically provision an environment for the older release (see 1 and 2), repro the issue and hand over the live state of the repro to the developer (as in 3). The developer can fix the issue and test it in the environment without having to delete their current stack for the upcoming release, while at the same time, the test team can verify the fix. Then, the fix can be validated easily with the customer (as explained in 4).
As you can see, cloud solutions can significantly reduce time spent on activities that are of little value to shipping the product. Cloud platforms provide the provisioning and collaboration primitives that dev/test teams to fully embrace the agile development life cycle and ultimately, deliver applications faster.
Sumit Mehrotra (@sumitsayz) is director of product management at Skytap (@Skytap), a leading provider of cloud automation solutions. He is an experienced industry veteran equipped with over 10 years in program management roles at Microsoft.