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.