The economics of Private vs. Public cloud.

The economics of Private vs. Public cloud.

… 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.

AWS logo

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.