… or, Act NOW to get Amazon EC2 m1.large for 50% off!
Sorry, I don’t have any inside scoop on blow-out sales for EC2 instances. But if you are considering Amazon AWS as a way to replace or enhance your development data center, you might benefit from taking a look at my simple cost analysis for #SandTech, a fictional software company building web delivered applications.
Based on a set of admittedly over-simplified assumptions, the cost to build a private cloud comes out to around half the cost of the same infrastructure on Amazon. In future posts I’ll look at situations where Amazon comes out as the better choice, or better yet, where a hybrid public-private cloud might be the optimal strategy.
Ready to #Sand?
Let’s assume you are the head of IT/Ops for #SandTech. Your boss, Mr. Big, heard that you can save a ton of money by moving to the cloud, and has asked you to look into it and make a recommendation.
Ironically enough, all of your existing 300+ engineering servers are approaching 5 years old and are due to be replaced. You’ve also outgrown your current headquarters and will be moving to a new facility. This is the perfect opportunity to start from scratch, either by building a private cloud on-site, or leveraging AWS for public cloud services… or both.
For this analysis we’re going to keep things really simple, focusing just on servers and ignoring stuff like bandwidth usage and storage. Whether you decide to build the engineering systems in the cloud or build on-site, in either case the new headquarters will need a network infrastructure with Internet routers, firewalls, and and network core to serve the basic corporate IT needs of the company. Fortunately, your new headquarters has a decent server room with sufficient power and cooling capability, so we’ll ignore all these costs in our analysis.
As for server spec, every one of your Ubuntu development servers just happens to need exactly 7.5 GB of RAM. Processing power is not really important, especially for the development systems that won’t see much load, so the equivalent of a couple of CPUs is just dandy. For local storage, 200GB is more than plenty. Not-so-coincidentally, an Amazon m1.large instance fits the bill nicely.
Of course, not all servers are used all the time; a development server generally needs to be available only when an engineer is actually working with it. However, your engineers generally share servers as they are working on projects, and as we know engineers don’t all work the same hours. The engineers are primarily located in Silicon Valley, but there are quite a few engineers on the US east coast and there is a significant QA function done in Asia.
Broadly speaking, some servers need to be up pretty much 100% of the time (i.e., your SVN and Bugzilla server), and some servers are only used occasionally. After careful analysis, you’ve determined that the average usage across all the systems is 30%, meaning out of the 8,766 hours in a year (365.25 x 24), the servers need to be up and available around 2,630 hours, which comes out to around 50 hours per week.
Amazon EC2
So now we know:
- what kind of servers we need
- how many servers we need
- how many hours in the year they will be used
Looking up the on-demand cost of an Amazon EC2 m1.large instance we see that it’s $0.34 per hour. Putting on your green eye-shades, 2,630 hours times $0.34 per hour comes out to around $894 per year per server. Over 3 years, that’s $2,682. Over 5 years, it’s $4,470.
We can cut this cost slightly by paying the up-front EC2 reservation fee to buy down your hourly usage rate. Back to the green eye-shades, the 3-yr reservation fee for m1.large is $1,400 which buys you a $0.12 per hour usage rate. Over 3 years that’s $2,346 (2,630 hours * $0.12 * 3 years + $1,400). Over 5 years, its $4,134, assuming in year 4 and 5 you pay the non-reserved rates (you can either trust me on this, or don your eye-shades again).
However, we can set aside most of that math for now (but hang on to those green eye-shades). Amazon has been occasionally lowering the cost of EC2 instances over time, so the numbers above are somewhat inflated. For the sake of argument and simple math, let’s assume taking future year price reduction into account, it’s a good bet that our 3 year cost per server is is going to be more like $2,000. We’ll assume the 5 year cost will be $3,000. Great! We can get our 300 servers from Amazon for $600k over 3 years or around $900k over 5 years.
Private Cloud
Your crack IT team has identified a hardware platform for the private cloud option. The specs are 1 rack unit chassis with dual 6-core AMD processors, 64 GB of DDR2 memory, a 2TB internal SATA disk, DC power supplies and out-of-band management capabilities. Xen Server was chosen as the virtualization hypervisor, for which you’ve reserved around 2.8GB of RAM, leaving 61.2GB available for virtual machines. With Xen, a physical server can be carved up in just about any possible combination of RAM, CPU and local storage. In this case, each server instance will be 7.65GB memory and 240GB of local storage, amounting to 12.5% of the available server. Each server will also get the equivalent of 1.5 CPUs allocated. Fortunately, Xen can be configured such that virtual hosts are allowed to take advantage of unused processing time from other virtual machines, so the effective processing capacity can be much higher.
Your team would be racking these servers into a 44RU cabinet with a pair of stackable 48-port access layer switches (i.e., Cisco 2960-S) and a dumb 48-port out-of-band management switch. Since all our servers are running on DC power, the cabinet also houses a stack of AC to DC rectifiers and a DC power back plane. Our vendor has given us a price tag of $27k for the cabinet, rectifiers, switches and cabling, tax and delivery.
Now, we know we need 300 virtual servers, each of which consumes 12.5% of a physical host. This means we need a total of 37.5 physical hosts. Our vendor tells us these servers can be had for $7k each including tax and delivery with the cabinet. We can’t buy a half server, and want to have an extra server on hand in case one breaks. This brings our total to 39 at a cost of $273k. Adding in the cost of the cabinet, we’re up to $300k.
There are several non-capital costs we now have to factor in. Your vendor will provide warranty, support and on-site hardware replacement service for the cabinet and servers for $15k per year. Figure you will need to allocate around 10% of the time of one of your sys admins to deal with hardware issues (i.e., coordinating repairs with the vendor) at a cost of around $15k per year in salary and benefits. You’ll need around 20Kw to power and cool the cabinet at a cost of around $20k per year. Figure around $10k per year to lease an appropriately sized UPS, transfer switch and generator, including maintenance costs and amortization of installation over a 10 year useful life. In total, your non-capital yearly costs add up to $60k.
So in all, the 3 year cost of your on-site private cloud deployment is $480k. Compared with the $600k cost of running on Amazon over 3 years, your $480k on-site option will be 20% lower. If you assume a 5 year life for your equipment, your on-site deployment comes out to $600k, or 33% less than running it on Amazon.
Now let’s change the equation slightly. Let’s assume rather than 7.5GB of RAM, your servers actually only need 5.1GB of RAM. With AWS, you still need to run the same m1.large EC2 instance type – Amazon doesn’t offer an “m1.medium instance” or anything between the small 1.7GB and large 7.5GB instance type (aside from the high-CPU XL 7.0GB instance, but this is twice the cost of m1.large).
But on your private Xen cloud, you can carve the physical Xen host up just about any way you want. You can put twelve 5.1GB virtual servers on each physical box and drop your server count down to 26 boxes, including your spare. This reduces your 3 year cost of on-site deployment down to under $360k, or 40% less than the cost of Amazon. For a 5 year amortization, the cost would come in around $450k or 50% less than Amazon.
Summary
Clearly, assessing the economics of building a private virtualized infrastructure versus running on a public cloud will greatly depend on your assumptions. Most significant of these is the utilization you expect from your servers. Running an m1.large EC2 instance full time over 5 years will cost you well over $6k, even accounting for likely future price decreases; the same virtual server on your private cloud will marginally cost less than $2k. However, if that same server will only be used 10 hours per week, the cost on Amazon would be a third the cost of the private cloud option.
So how about the best of both worlds? A hybrid private / public cloud will be a topic for a future post, in which l will talk about the calculator I created on Google Spreadsheets, and make it available for you to copy and try out yourself. I created the tool because Amazon’s calculator is not very useful for comparing to a private cloud / virtualized infrastructure because it makes the assumption every server is a dedicated box. With my calculator you can create real world scenarios of servers with different specs and utilization ratios (obviously nobody is going to build a farm of 300 servers all with 7.5GB). You can also include stuff like bandwidth utilization and storage, and all of your assumptions around AWS pricing and the architecture of your on-site private cloud.

[...] Farley, has been discussing this very topic for few months now. He observed that a medium sized organization with an decent IT infrastructure including a dedicated IT staff to [...]
Pingback by Cloud economics: Not really black and white.. | Scalable web architectures — November 12, 2010 @ 11:39 pm
[...] a previous post I compared the cost of building a private virtualized development environment in house versus [...]
Pingback by EC2 On-Demand vs. Reserved « NetShroud — November 23, 2010 @ 1:03 am
[...] a previous post I compared the cost of building a private virtualized development environment in house versus [...]
Pingback by AWS vs On-Site Private Cloud – The Calculator « NetShroud — December 2, 2010 @ 1:33 pm
There is a fundamental flaw in your argument, and that is that Amazon AWS pricing will be constant for 5 years.
If you instead do a 3 yr refresh and/or cut the cost of AWS by 40%/MIP after 3 yrs, reasonable assumption based on compute cost
trends, the difference is much closer.
The economics of the cloud should beat internal small data center solely on the basis of IT administration cost reduction.
Comment by Patrick — January 25, 2011 @ 10:14 pm
Patrick, thanks for the comment!
Take a closer look at the EC2 section in this post and you’ll see that I discounted the 5 year AWS cost by an overall 27% to take into account future price reductions. If I recall correctly, this was something like an 8% compound annual price reduction. And note that discounts would only apply to the usage charges since Amazon is not likely to refund any of your reserved instance fees if you go that route. If you check out the calculator linked in the most recent post, you can customize your own assumptions about future price reductions on Amazon.
I do agree that for many companies an Amazon public cloud will make more financial sense – especially those that are very small (less than a rack or 2 of servers), or have very bursty or seasonal compute requirements.
But for many companies who need more than a couple racks worth of servers, I believe that at least for the next few years a private cloud for baseline workload, with occasional use of a AWS for peak / temporary workload servicing is the best approach. If you run the numbers, you may agree.
I’ve been thinking a lot about how there are actually some fundamental inefficiencies in Amazon’s EC2 model compared to what you can achieve in a private cloud. I’ll outline some ideas in a post in the next few days.
Comment by Richard — January 26, 2011 @ 12:14 am