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.