Control Costs: Use Cloud Test Environments
There is no more effective way to reduce your overall test environment spend than to migrate to cloud test environments and embrace testing and infrastructure automation. The nature of test environments is inherently temporary—you set up an environment, run through an automated test suite, and then tear down the environment. If you can reduce the cycle time for this process down to hours or minutes, then you may be able to cut your test environment budgets considerably.
This is the “Holy Grail” for both cost savings and agility. This on-demand model allows you to take advantage of public cloud APIs and only pay for the time you need to run through automated tests. Its success depends on two things: automated infrastructure and automated acceptance tests. If you can reach these two goals, the cost savings from reduced infrastructure spend and the increase in agility will more than pay for the cost of both of these automation initiatives.
Automation is the Key to Cloud-Based Cost Savings
It isn’t enough to just move “to the Cloud.” If you really want to take advantage of cloud-based test environments, you need to change the way you view these environments. Everything about them should be automated, and you should be able to stand up and tear down an environment quickly. If you can spin up and spin down environments as needed, and if you can automate the setup of test data then you create a continuous deployment pipeline, which views the creation of a test environment as just another step in a build pipeline. The key is to get rid of manual testing so that test environments don’t need to exist any longer than it takes to execute a test suite.
Here’s an example. Assume you work on an application that runs on Tomcat. You track source code in Git, you build your application with Jenkins, and you publish a build artifact to a repository such as Nexus. You have a continuous integration server running 24/7. Any time a developer pushes a commit to your repository your system kicks off a build, and runs a comprehensive suite of unit tests. For years, your team was satisfied with running continuous integration that ended at unit tests. When your project approached a release, a QA team would run through a series of manual checks against a static QA environment. That QA environment had to be maintained 365 days a year, but it was only used for maybe 30 days a year. It was inefficient, and QA was a constant source of configuration and management issues.
With the advent of continuous deployment, your team is now extending the build pipeline to create QA environments dynamically only when needed. Your QA team is also committed to building out automated test suites that can be run as part of your continuous deployment pipeline. In this new environment, no QA tester ever needs to run a test; the entire, end-to-end test suite can be automated. Instead of having to worry about keeping a separate environment up and running your build pipeline creates it automatically, runs the test suite automatically, and then tears it down once testing is complete. It does all of this using public cloud APIs on a service such as Amazon AWS, Microsoft Azure, or Rackspace.
Using cloud-based infrastructure APIs alongside deployment automation tools means that you only pay for the time you use. Your static QA environment might have cost something like $30,000 to maintain every year, and your new, dynamic approach only runs for a few hours a week keeping your effective annual cost under $5,000. Another benefit is that multiple test environments can be created at the same time without conflict. If the project is experiencing heavy development, your new pipeline can spin up a new, ephemeral test environment for multiple commits on multiple branches at the same time, for a fraction of the cost of a dedicated test environment.
Cloud Test Environments: Shift to OpEx, Save Money
The impact of this approach cannot be overstated. It is the future of test environments. If you have a software project that requires a full QA regression test and you create a script to automate both the execution of these tests and the creation and tear down of an isolated test environment, then you have changed almost everything about Test Environment Management. In this scenario, a code commit can trigger the dynamic creation of parallel test environments in the Cloud which may only need to exist for a handful of hours. In a pay-as-you-go environment on a public cloud, this means that your budgets are calculated not by how much it costs to rent an environment for a month or a year, but how much it costs to pay for transient cloud-based resources during a single regression test.
It might cost you $1000 per month to run a QA environment. Think about the cost of running several environments for only a few hours at a time in a given month. During busy development weeks, you might spend $12 per test suite execution and run a regression test twice a day. During a slow week, you might not run any tests at all. Cloud-based infrastructure and automation allow you to reduce the on-going costs associated with test environments dramatically.