How Much should a Cloud-based Test Environment Cost?
Dec 14, 2016
How much should you be spending on your test environments? How much is too much? How much should test environment cost? In this post, we outline a simplified model of a generic application running in the cloud. Using Amazon Web Services (AWS) on-demand prices we calculate some price points and explore the cost of QA relative to production.
It is impossible to come up with a number that will make sense to all readers. IT budgets vary widely and depending on the scale of an organization one CIO's budget-killing production system may have the price tag of a larger company's smaller testing environment. The goal of this post is to illustrate the relative costs and make a comparison between what it costs to run production and what it costs to run test environments.
In this post we're going to ignore the costs associated with environment management staff and software licensing. Our focus is on the cost of infrastructure for a generic application. Assume you are running a banking application using open source software running on Linux backed by a commercial database.
The Cost of Production
We assume cluster sizes for a production application that needs to support 2500 simultaneous transactions on a platform that can handle 50 transactions per second per VM. This translates to a 50 machine cluster of application servers distributed across two data centers in production. You have an active database in one datacenter and a standby database in another. Your average monthly cost for 50 application servers based on AWS pricing for an m4.2xlarge @ $0.479/hour is $17,800 / month.
The production system depends on two clustered database pairs each with 61 GBs of memory and 8 vcpus. Since each data center has a cluster of two we will use the AWS pricing for four db.r3.2xlarge RDS instances in a Multi-AZ deployment @ $3.640/hour - four of these would cost $11,600/month including the Oracle licensing fee.
Assuming cloud prices for infrastructure and ignoring additional charges for bandwidth and other components such as load balancers, web servers, bandwidth usage, and storage. This production application would cost $352,800 to run every year.
The Cost of a Test Environment
In QA and Staging, you can scale down both cluster sizes and VM footprint. Instead of 50 application servers, you need 4 smaller machines (a m4.large @ $0.12/hr) to test clustering within a data center as well as across two data centers. You'll also be able to run a much cheaper database (a db.m4.xlarge @ $1.645/hr) and you may only need one instance.
The monthly cost of running a test environment's application servers is $350/month, and the cost of running a QA database is $340/month. Assuming that each of your QA environments is a simple copy of this pattern each QA environment would cost $8,300 to run for a year.
In this scenario your QA environment's annual cost weighs in at 2.4% the annual cost of your production system.
QA Cost as a Percentage of Production
Is this reasonable? Yes, in fact, it may be a bit on the low end given some of our simplifying assumptions. If you ever need to test clustered database configuration in staging or QA then you may want to increase the size of your databases, and if you really want a pre-prod environment that matches production you should use the same level of hardware available in production. For an application of this magnitude spending between 2 and 5% of the cost of production on a QA environment is a reasonable expectation. Note: that this is a price per test environment, so if you needed three QA environments you could easily spend between 6-15% the cost of production.
This metric and the assumptions made in this post are relevant to a system that has to reach a certain level of production scale. If your application operates at a smaller scale than 2500 user interactions per second then the cost of QA as a percentage of production may be much higher. If your production application operates at a larger scale then there's a good chance your QA environments may weigh in at 1 or 0.5% the cost of production. The size of your production cluster is highly variable and depends on the number of customers you are serving with an application, but a system running 50 application servers backed by a hefty, mission-critical database represents the kind of system that can scale to meet the demands of a medium-sized software-as-a-service company.
Use Plutora to Track Test Environment Cost
Whatever your cost for test environments these are just the kind of metrics you need to start keeping track of as you plan and justify the expense of test environment management. Using Plutora you can keep track of test environment allocation and you can track the work effort required to setup and teardown test environments. With Plutora your test environment management team can help the business understand both the cost and the value of test environments to ensure that you'll always be ready to answer the question: "Are we sending too little or too much on our test environments?"
Download our free eBook
Mastering Software Delivery with Value Stream Management
Discover how to optimize your software delivery with our comprehensive eBook on Value Stream Management (VSM). Learn how top organizations streamline pipelines, enhance quality, and accelerate delivery.