Cloud Deployment Testing: Leveraging PaaS, Saas and IaaS

Many challenges arise when it comes time to deploy your applications, and if deployment goes wrong, the problems are incredibly visible to both the users and upper management. But with cloud computing, there is a better way to smooth out the deployment process.

Thinking that the cloud could ever completely replace on-premise applications is like asserting that public transit will one day completely replace the automobile in cities like New York or Toronto. No matter what, people are always going to want to have their own vehicle so they can control when, where, and how they travel. Control can’t be underestimated as a motivating factor in people’s behavior. But that doesn’t mean a car lover might not hop on the subway every now and again. And of course, with the rising cost of fuel, mass transit begins to look like a more and more attractive option. In a similar vein, even organizations that are dead set on deploying applications in-house are becoming more and more open to leveraging the cloud for various purposes; deployment testing is a perfect case in point.

The High Cost of Infrastructure

The most common reason for a business to choose cloud testing of an on-premise application is that the cost of building a test environment on-site is prohibitive. Even an enterprise level organization may choke at the size of the bill for purchasing and maintaining the infrastructure needed to create the required lab environment. Small VARs and software firms creating on-premise apps for enterprise clients are even less likely to have the available capital to do so.
Regardless of whether funds are available, making this kind of investment simply isn’t justifiable from a usage standpoint in today’s lean IT environment. According to IBM, testing hardware is only used 10-20% of the time on the average project. This makes both license costs and infrastructure expenses needed for large scale load tests seem even more outrageous when the equipment will sit idle most of the time. It makes much more sense for businesses to source a QA cloud for deployment testing.

How Is a QA Cloud Used for On-Premise Applications?

A QA cloud can be designed to mimic the actual production networks where the new application will be deployed. The application can be tested to the point of failure without gobbling up on-premise resources or disrupting on-premise infrastructure in any way. In fact, the cloud is particularly attractive for deploying upgrades to see if they are safe to use on-premise. Risk mitigation is often a high priority for enterprises that insist on using on-premise applications. In this case, the cloud actually makes deployment safer by helping identify potential problems caused by upgrades before the real “go live”.

Cost Savings and Efficiency in Cloud Deployment Testing

This virtual lab is paid for on a consumption basis under the Infrastructure as a Service (IaaS) model. This means that a firm is only paying for a test environment when they actually “fire it up” to run their load, performance and deployment tests. In addition, they can scale up to dizzying heights that they could never afford if they had to actually pay for the cost of infrastructure. In other words, they don’t have to build a subway to get from A to B. They can just buy a token or a swipe card.

The testing tools may be bundled into the IaaS testing environment package or purchased separately. For example, test lab automation solutions can be used to add even more value to the QA cloud. Such solutions allow the reuse of test patterns and automation of provisioning and environment setup. This approach may reduce the time DevOps must spend in designing and conducting deployment testing. With today’s Agile deployment model that involves frequent application upgrades (and the increasing complexity of applications in general), automation is the only way to keep up.

Additional Considerations for Deployment Testing in the Cloud

There are a couple of things to keep in mind when doing deployment testing in a QA cloud. First, as Vijayanathan Naganathan at Infosys points out, you do need to compare whether the cloud is actually giving you an accurate imitation of your on-premise infrastructure. That means developing and using a benchmarking system to determine whether there is a difference in application performance between the QA cloud and the actual on-premise production environment. This is an extra step, but it can help avoid nasty surprises since it will reveal hidden differences between the cloud and the on-premise network.

Secondly, it’s important to understand that deployment testing for upgrades to existing applications may not always be possible. A legacy application built several decades ago and run on legacy infrastructure may simply be “untranslatable”. It may not be possible to provision virtual servers in the cloud that communicate in the same way as legacy infrastructure. In these cases, it may pay to update or redesign the on-premise applications and infrastructure. Even enterprises that don’t want to migrate fully to the cloud will eventually find that they must at least be cloud-compatible to remain competitive.

Dig Deeper on Core Java APIs and programming techniques

App Architecture
Software Quality
Cloud Computing