AWS: Pushing Dev/Test Environments in the Cloud

The AWS Start-up Tour, combined with a few books I’ve been reading lately (like the O’Reilly title “Cloud Application Architectures”) have made me re-think/see additional uses for cloud computing. Specifically, there can be a significant cost-savings when moving Dev/Test environments into the cloud.

(I’ll talk about the advantages of being able to quickly build/tear-down environments using images (AMIs) and EBS snapshots of a database in a different post.)

Using a hypothetical example, let’s say your startup/team has several test environments: Test, Stress, Stage and Production. The architecture is cloud-friendly enough to be able to think about moving at least your Test environment into the cloud. The question is, should you?

Hardware Requirements/Costs

The physical machine layout for Test might consist of the following:

Server type Cost Qty Total
Web  $3,000 1 $3,000
Application $4,000 2 $8,000
Database $4,000 2 $8,000
Cache $4,000 2 $8,000
    Total $27,000

(I’m excluding costs like bandwidth, rack space, hardware depreciation etc for simplicity. Including them only makes the case more apparent)

 

The initial costs come to $27,000. Note that it is definitely possible to incorporate cheaper hardware (and these are only estimates, YMMV). In my current environment, these costs would be significantly on the low-end.

Release Cycle

Following a basic “agile”/deliver-often methodology, the project plan (you do have one, right?) might roughly look something like this:

Week(s) Purpose
1 Planning
2-5 Coding
6-7 Test
8 Deployment

In the above example, Test consumes approximately 25% of the release cycle. (If the cycle time goes to 4 weeks instead of eight, the ratio stays the same). In other words, 75% of the time, the hardware is not utilized.

Cloud Hardware Requirements/Costs

Let’s assume that the Test environment is used 20 hours/day, 5 days/week during the Test phase of the release cycle (20 hours x 10 days or 200 hours). Note that we only pay when we have instances running. We can tear them down and not pay for the overnight/weekend hours. If we build the same infrastructure in AWS, we might see something roughly like this:

Server type Cost/hour Qty Total
Web $0.10 1 200 x $0.10 = $20.00
Application $0.20 2 2 x 200 x $0.20 = $80.00
Database $0.40 2 2 x 200 x $0.40 = $160.00
Cache $0.20 2 2 x 200 x $0.20 = $80.00
    Total $360.00

 

 

 

 

 

 

 

 

 

Using AWS, the Test cycle would cost approximately $360 per release. There would be some initial ramp-up costs as the team learned the ins/outs of AWS.

If we focus solely on the hardware costs between cloud utilization vs physical utilization, we get a one-time cost of $27,000 (assuming no service/maintenance contracts, etc) vs a per-release cost of $360. Said another way, it would take 75 releases tested in the cloud to equal the cost of the initial hardware outlay.

I realize that some points of my hypothetical scenario are missing – however, I think this illustrates the significant cost savings that can be achieved by moving Test and Dev environments to the cloud. From my current vantage point, this is truly compelling.

Pretty much a no-brainer.