This article is part of a series on the defining value propositions of cloud computing platforms. The whole series includes:
- The Cloud – IaaS
- The Cloud – Managed Services (coming soon)
- The Cloud – Elasticity
- The Cloud – Integrated Development Platforms (coming soon)
Infrastructure As A Service
The main value proposition usually associated with the cloud is that it replaces the need for purchasing, racking, and managing your own computers, storage, and networking hardware in a datacenter. This is far from the only benefit of the cloud, but it’s certainly a major one. Amazon CTO Werner Vogels describes it nicely:
The cloud lets its users focus on delivering differentiating business
value instead of wasting valuable resources on the undifferentiated
heavy lifting that makes up most of IT infrastructure.
The “undifferentiated heavy lifting” that Vogels describes includes things like: procurement of hardware; building/renting space, network, and cooling in specialized datacenters; physical machine security; hardware monitoring; network administration; and all the associated capital costs and bookkeeping.
The general model for IaaS is that you can click a few buttons in a web interface (or make a few API calls, if that’s how you roll), and a new computer boots up somewhere, just for you, an instant toy/tool, that acts just like a machine that you unboxed and racked yourself, except it’s powered, networked, and cooled, with an OS ready to go.
Let’s savor the appeal of having powerful thousand-dollar gadgets just appearing with the click of a button. Seriously, just savor that. It’s like geek Christmas, every day….. Man, do I the cloud.
The Dirty Truth of The Cloud
IaaS providers do their best to hide from you the dirty truth of the cloud: cloud machines are almost always virtual machines, not real ones. When you launch a new machine, it’s the server-grade equivalent of running Windows on your Mac with VirtualBox or Parallels. Major cloud providers use what’s called a Hypervisor process, usually Xen or VMWare ESX to run many logical (guest) servers on one physical hardware (host) box.
Underlying this simple idea is a lot of complexity. Sometimes the abstraction of “just like a regular machine” leaks out in how you provision, manage, or monitor cloud machines. But in the past few years, as the startup world has moved rapidly to managed infrastructure, there are fewer and fewer issues with running your production system in a virtualized cloud environment.
If you want a managed infrastructure, but on dedicated hardware, you can either opt for something like EC2 Dedicated Instances, or you can move to a provider that allows you to select your hardware, but then manages it for you, like IBM’s SoftLayer
IaaS is Often Cheaper, Especially At First
Cloud Services providers are constantly promoting how much cheaper it is to run in the cloud. And it is. Sort of…. Like most cost calculations, the truth is it depends.
Capex becomes Opex
At first, there’s no doubt that the Cloud is cheaper. The capital expenditure for hardware and people to run it is a significant cost for any startup, especially in the modern era of lean startups (both financially and philosophically lean).
Swapping that capital expense for monthly operating costs allows a startup the low up-front cash, and the operating flexibility to modify infrastructure as necessary to meet the growing or (more often than we’d like to admit) shrinking needs of the startup.
The Total ROI Is Huge
The most common mistake I see founders making when evaluating the ROI of a cloud deployment, is that they stop at running the raw price calculations. And of course, they forget all the components involved with a robust infrastructure. They focus solely on the CPUs and datacenter cost, but skip all the networking gear, KVMs, spare parts, hard drive replacements, etc.
There’s little doubt that IaaS pricing is a win for the little guy (and the providers aren’t faring too badly either!). The providers get to buy in bulk, and rent you instance access at a reasonable markup. Given the rates a giant like Amazon gets on hardware and bandwidth, it’s quite likely that even with their markup, it still costs less than if you paid small startup prices yourself. Not to mention your likely preference for operating vs capital expense.
However, the real win comes in time-savings for your technical team. I can’t stress enough how much of a distraction it is to run your own infrastructure. Servers are not a set-it-and-forget-it kind of resource! Any savings you get by penny-pinching onto your own hardware (maybe not much savings at all) will quickly be made back when your developers aren’t woken up in the middle of the night to replace hardware or debug network issues.
Is Cloud IaaS Right For Me?
If you have to ask the question, then the answer is quite likely yes.
Most startups these days that decide to rack their own hardware know in advance that it’s a core competence (a pillar for your business). My friends at ObjectRocket launched to build the best hosted MongoDB solution available. They are systems and performance experts, and that’s what they were selling, so owning their entire hardware stack was crucial to maintain the control they needed. And they were willing to spend the capital up-front, knowing they could pass the long-term savings on to their customers. They did such a good job building their own infrastructure play that RackSpace acquired them very early for a tidy sum.
You are paying two kinds of overhead when you deploy to the cloud:
- A virtualized environment comes at a performance cost. It’s very efficient in terms of CPU and RAM performance (maybe a 2–5% hit vs. dedicated hardware), but shared network, shared disk I/O and other factors mean that you won’t have screaming fast hardware at your disposal. And that’s okay. Very few companies need that.
- There’s a man in the middle (your IaaS provider) marking up the hardware on you. If you need lots of hardware, and can get bulk rates when buying it, and have the capital to spend, simple economic theory suggests that cutting out the man in the middle will give you the most bang for your buck.
If you absolutely have to have the most hosting performance for your dollar, and you don’t require the flexibility to scale up and down very much, you might consider building it yourself. But if you are going to build your own infrastructure, remember that you need to budget for at least one (recommended three) full-time system and network admins. In my experience, you shouldn’t even start to think about building your own infrastructure until you know you’ll need at least 100 machines.