In the previous parts of this series, I blogged about issues commonly raised in objection to cloud computing: difficulty of migrating existing applications, managing risk, and meeting SLAs. In this post, I'd like to address an issue I've heard raised a number of times: that cloud computing, far from saving IT organizations money, actually costs more than providing the same services in-house.
Read the Whole Case Against Cloud Computing Series
Part One: Migrating Apps
Part Two: Managing Risk
Part Three: Meeting SLAs
Part Four: TCO
Part Five: Managing The Cloud
I hear this most commonly identified as an issue with Amazon EC2, put in this way: A large instance of a Linux server (15 GB memory 8 EC2 Compute Units (4 virtual cores with 2 EC2 Compute Units each); 1,690 GB instance storage (4 by 420 GB plus 10 GB root partition) 64-bit platform I/O Performance: High) costs $.80/hr, or $576/month). A Windows instance is even more expensive: A large instance with Windows Server 2003, Microsoft Authentication Services, and SQL Server costs $3.20/hr, or $2304/month. A like-for-like comparison for a similarly-sized Windows instance sans the additional software is $1.20/hr, or $864/month).
By comparison, Amazon's small instances (1.7 GB of memory, 1 EC2 Compute Unit (1 virtual core with 1 EC2 Compute Unit), 160 GB of instance storage, 32-bit platform) are $.10/hr, $72.00/month for Linux, and $.125/hr, $90/month for Windows.
So certainly we can see that large instances of Amazon EC2 instances are pretty expensive. On the other hand, those are pretty beefy machines—they could do some serious computing. For many light load systems, the cost is much lower. One can recognize the obvious conclusion: the monthly cost varies according to how much capacity you purchase. Purchase more capacity, pay more. Purchase less, pay less.
However, despite the obvious conclusion, the argument raised is that Amazon is more expensive for equivalent computing capacity compared to other options. In discussing this with one person, he noted that even if an IT organization didn't want to host a machine itself, it could use an outsource provider. His opinion is that Amazon ends up being more expensive than the established ways of obtaining computing capacity.
He derives this opinion based on the obvious: $2300 per month for a Windows server? That's got to be more expensive than it costs for a Windows box in the data center! After all, how much can a server run? $1500? Maybe $2000? Throw in a Windows Server license and a SQLServer license and you're still in for less than $10,000—compared to $25,000 per year at Amazon! And even if the IT organization isn't very good at operations, it can always turn to an outsourcer, and everyone knows they can do it really cheap.
Do the Math Correctly
In evaluating the (supposed) high cost of Amazon EC2, that raises the question: compared to what? In other words, to assert that Amazon (or one of the other cloud providers) is more expensive than doing it internally or outsourced, one has to know exactly what it costs to run a machine internally or via an outsourcer. And I'm not convinced those costs—despite the opinion expressed by my colleague—are truly known. In fact, I would go so far as to say that most IT organizations really don't have much of an idea what their true cost of, say, provisioning a 1U pizza box server actually is. But having an intuition on this topic is not the same as facts, so I decided to do some research.
Here's what I turned up.
First, I turned to everyone's favorite research tool: Google. There is a well-established school of cost accounting called Activity-based Costing (going, inevitably, by the moniker ABC). I learned about it during my MBA program. So I researched it. There's a ton of ABC literature on areas it has been applied, especially in manufacturing—and, by the way, ABC is the real deal; when it's applied it can provide real enlightenment about the true cost of creating a good or providing a service. On the other hand, I couldn't turn up a single example of ABC applied to IT. Nada. Zip. Either it's not an interesting application of ABC, or it's too hard. But it doesn't exist.
So I then turned to everyone's next favorite research tool: the wisdom of the crowd, expressed via LinkedIn. I posted a question to my network asking if anyone knew of good studies of internal IT organization costs vs. outsourcer costs.
I got a number of replies and actually had an extended dialogue with a fellow named David Moufarrege, who has had a long career in outsourcing, and specifically worked in outsource proposal pricing. I asked him about his experience in doing this pricing and he told me that one of the biggest problems his company would face in making a proposal is that the IT organization being proposed to didn't really understand their true cost structure. IT organizations would count up the number of machines, assign a putative cost, do a headcount review, and assert an overall cost. David's company would then have to point out that there are software licenses associated with the machines, including management software, etc., etc., to come to a more realistic cost picture.
In turning to the outsourcer side, I asked David how they knew their own costs of running a set of machines and so on to enable a bid to be placed. He noted that the pricing was typically parity-based; that is, the number proposed is typically a comparison to the IT organization's own costs (after suitable adjustment as noted just above). So I guess the outsourcing motto really is "Your mess for less." Outsourcers establish a current running cost for the IT organization doing the work itself and then bids something less than that number and figures it will make money by spreading labor costs across multiple customers (e.g., an Oracle DBA manages databases for four different companies; each company's share of that DBA—1/4 his or her loaded salary plus outsourcer profit margin—is much lower than the cost of each company employing its own Oracle DBA).
When I queried David about the pricing of an individual system (to establish a fairer cost comparison to Amazon, the point of this exercise), he noted that outsourcers try and avoid a menu pricing arrangement, preferring to provide an overall price, thereby precluding the ability of an IT organization to comparison shop—this reinforcing one of my old truisms: "everyone loves transparency—in somebody else's business." And, in fact, it may be that outsourcers themselves do not really know what it costs to run a single piece of equipment; one response to my LinkedIn query was a suggestion that I speak to a particular individual at one of the very large outsourcing firms, as his current assignment is figuring out its true cost of service.
Beyond the obvious problems of comparing Amazon pricing with internal pricing—the lack of awareness of all the real direct costs and the lack of transparency in actual outsourced costs—there remains another. In comparing the intuitive assessment of internal costs (a 1U pizza box server runs around $1500, and one SA can manage around 25 machines, so add 4% of an SA's cost to the cost of the machine) to the costs of Amazon, the comparison is based on marginal cost—Amazon cost versus the cost of one internal or outsourced server.
There's a whole range of indirect costs that are not assigned in this approach: (1) the cost of all the extra personnel necessary to manage server procurement— internal technical people to do assessments and trials of different hardware offerings, procurement people to do the negotiating for hardware purchase, internal and external costs for data center designers, facilities management, etc.; (2) other technical personnel necessary to keep a data center up and running—network and data admins, etc.; and (3) contract and account people to keep track of all the various licenses, leases, etc. There's a ton of indirect costs associated with IT that never get thought of as being part of an individual server's cost, but get added into the cost structure of the IT organization or the overall company itself.
And, by the way, many of these costs occur even if an outsourcer is used—instead of the accounts payable people tracking a contract with a particular hardware vendor, they're tracking a contract with the outsourcer. As a side note, these indirect costs are what ABC is focused on identifying and assigning; the lack of ABC within IT is a good indication that nobody really does a good job of identifying the true marginal cost of internally-provided IT resources.
And all of these costs don't even include what may be the biggest: the cost of senior management time—time spent worrying about operations staffing, and data center buildout, and server leases, etc., etc., instead of how to use technology to further the primary aims of the business: selling more stuff, reducing overall operational costs, communicating better with customers and partners, and so on. Every minute spent on reviewing an RFP for procuring another tranche of servers is a minute not devoted to how to use IT for competitive business advantage.
The Cloud Cost Advantages
For all these reasons, it's a mistake to look at Amazon pricing, calculate the cost of a server in one's head, and conclude that Amazon is more expensive. And Amazon (and its brethren in the cloud providers) offer other advantages:
The pricing is transparent: you know just how much it will cost to run a server per hour. The pricing is posted, so there's no surprises. And if you decide to change something, you can calculate what the new pricing will be, unlike outsource contracts where change orders are seen by outsourcers as a margin bump opportunity.
The pricing is fixed you can calculate what the total cost per month will be. Don't underestimate the attractiveness of certainty. Most of us buy mobile plans that overprovision us with minutes of service; we do this because we prefer knowing just now much each month's service will cost us.
Purchase is easy: you need nothing more than a credit card to get going with Amazon. No need to endure visits by sales people, create RFPs, buy machines, etc., etc. The period from decision to do something to actually getting to work is minimized, enabling organizational agility.
And really, the pricing is cheap: I don't know what electricity costs where you do your computing, but in Silicon Valley, where I live, I think the cost just to power a machine is not much less than $.10/hr; add in the cost of the machine itself and all the other costs, and Amazon may well be cheaper on a per-hour basis.
So what should you do if you want to get going with Amazon but are concerned about being cost-effective? Here are some tips:
1. Don't overprovision system resources: unlike internal machines, where the penalty for under-provisioning is often a wasted server and an additional outlay for a new, bigger server, with Amazon it's easy to upgrade the capability of the system. So start smaller; if you need to upgrade, do so.
2. Look for applications that leverage Amazon's ease of use: EC2 instances can easily be brought up and quiesced; it's not necessary to keep an instance up and running 24/7. Unlike a data center, where once a server is installed it's easier to keep it running than to power it up and down, Amazon is ideally suited for applications that are used in a transient fashion, or even a temporary fashion. For example, one company I worked with had an application where it needed to test a system with 100 simultaneous browser instances. The company fired up 100 Amazon EC2 instances, ran a browser script on each one overnight, and completed the test the following day, whereupon it shut down the instances and discarded the systems. It accomplished all of this over a period of three days. Imagine how long it would take to do this in a traditional IT environment. Even better: the total cost for the simulation: $100.
3. Prove the financial case for yourself: Take a low-importance application, migrate it to EC2, and figure out what it costs. Use the app as though it were in your data center. Evaluate how much it costs on EC2 and compare it to running the system internally. That's the best way to calculate internal vs. cloud costs.
It's a mistake to evaluate cloud computing's cost in isolation. Assessing the overall cost of delivering a server's computing capability is the right yardstick, and there the putative cost disadvantage of cloud computing is much less clear.
Bernard Golden is CEO of consulting firm HyperStratus, which specializes in virtualization, cloud computing and related issues. He is also the author of "Virtualization for Dummies," the best-selling book on virtualization to date.