I have been researching cloud computing over the past few months and evaluating the various vendors, service add-ons and pricing to see how it compares to our colocation solution. While many people think of cloud computing as a way to do it cheaper, I came across a great quote (which I can’t find now) that basically said:
Why would you expect someone to provide a higher level of availability and more features at a cost lower than you can do it yourself?
You can argue about economies of scale but fundamentally it’s on the mark. Amazon (and the other grid/cloud providers) have to pay for the same hardware and infrastructure that we do except they have even more strenuous requirements. And since they’re not a charity, there has to be some profit in there, too.
But many of the reasons to wait on cloud computing, at least the Amazon variety, changed today with the announcement of three new services:
- CloudWatch – Web services-based resource and performance monitoring of EC2 services at $0.015/hr or $10.80/month.
- Auto Scaling – A key feature of add-on services like RightScale, Auto scaling will add or remove server instances on the fly. Most web sites experience some amount of seasonality whether it be time of day, day of week or month of year and this will reduce costs by scaling up only as needed. It’s included as part of CloudWatch.
- Elastic Load Balancing – Yes! Instead of setting up an instance and running keepalived or haproxy to route traffic between multiple servers, Amazon now has load balancing at $0.025/hr or $18/month and it can span multiple availability zones (~physical data centers). You also pay $0.008/GB of data transfer handled by the load balancer. 100GB/month would cost you $0.80.
Why is this news?
It means EC2 just got cheaper as you scale up.
For my company, we run a two-node cluster primarily for high-availability. To actually keep this highly available, we also have to run a pair of load balancers managed by keepalived. This works quite well but it’s 4 separate boxes with power supplies and disks consuming power and taking up rack space. Those are all the downsides to having your own rack space. At least in California, power is the most expensive part of physical hosting and also the biggest restriction. It took a fairly exhaustive search to find a datacenter where we could get 30A into a single cabinet.
If we had our current architecture in EC2 today, my interpretation is we could eliminate our two load balancers to save $144/month (small instances are ~$72/month) and replace them with $11 worth of Elastic Load Balancing. If we added monitoring, we should be able to add web servers as demand dictates for additional savings by not having a second web server running 24/7.
Most smaller web companies want five nines but can’t afford it nor manage it. Historically we run our service just short of 99.99% uptime which is fairly expensive and difficult to achieve but provides a scant 3.5 hours of downtime per year. Most companies can tolerate this. These new features of EC2 are making it inexpensive to take advantage of EC2s promise: on-demand scalability with high-availability.
How to save money with EC2
When I agreed it was insane to expect someone else to do something for you for less money, it was if you compare apples to apples. Everyone has a base architecture that has something like a database server, web server and mail server. You simply cannot expect to save much, if any, money in your initial configuration. The only meaningful way to save money with cloud computing is to reduce the incremental step in costs as you add capacity. If a colocated solution offers you additional 10 units of web server performance for $1000/month and you can buy the same performance in 1-unit increments for $100/month, then you save money anywhere between 10 and 20 units. Virtualization and auto-scaling make it possible to reduce your investment to the minimum required capacity on a minute-by-minute basis to drive the most value from cloud hosting.
I think it’s time to start running some tests…
Zack Steinkamp said:
on May 18, 2009 at 9:48 am
Good stuff Brian.
For Dipity, we also run a pair of load balancer instances for HA reasons. However, they’re mostly idle. Amazon’s load balancer may be a good way to address this, though I’m guessing it doesn’t have the configuration flexibility of our pound daemon. The $150/month savings may be worth it though.
I do think that it’s not unreasonable to see how Amazon can provide this service cheaper than you can and still make a profit. The nature of their systems is quite different (multiprocessor hardware, huge storage racks) than something you would or could (afford to) do yourself. They’ve got an ops staff, and industrial grade hardware — so what they’re offering lis likely *better* than what you or I would build.
There are advantages not only in capital outlay, but in the time you spend troubleshooting issues. For instance, if you own the disks that are running your database, a failure in one (not uncommon) can mean a trip to the store, a trip to the colo, and crossed fingers that you’ve found the problem. With a big cloud solution, we do not worry about disk storage any more. The dollar outlay is similar, but the time and reliability aspect is a big win.
When you’re a small shop, any time diversion from your core business is costly.
brian said:
on May 18, 2009 at 10:40 am
@Zack – I couldn’t agree more (and I hope I didn’t contradict myself above even if I didn’t address it directly) on your quality and distraction points. I hear a lot of people who think of cloud computing at 10c/hour as a way to drastically cut costs. I don’t think that’s the benefit of cloud computing. I think the benefits are exactly what you described: no hardware capex, theoretically “better” infrastructure and less time spent on infrastructure (again, theoretically). If the cost is within a reasonable percentage of what you’re spending today, it’s a no-brainer to move. Services like they added today are only making it easier and easier to do so.
Re: their load balancer; how many of the fancy bells and whistles in pound are you using? We do pretty standard availability checking and least-connection routing with keepalived.
Sami Hoda said:
on May 18, 2009 at 10:50 am
Good article. I read something similar in CIO Magazine recently. However, in their tests they still found cloud computing to be as expensive as in house systems. Again, all this depends on your current setup and where you are headed. I’m interested in this area, but will probably wait till 2010 before making any moves. Security in the cloud, as Cisco’s CEO mentioned, is gonna be a major nightmare. So there are other considerations besides cost.
Zack Steinkamp said:
on May 18, 2009 at 10:51 am
In Pound, we configure it to look at the Host: header and route to specific backends for certain specific hosts. Most of our webservers serve many virtual hosts, but there are a couple that are specialized (e.g. blog.dipity.com routes to one instance running WordPress).
It’s not impossible to move the existing config to Amazon’s new deal, but it may not save us as much $$$ if we have to pay for multiple load balancers to have things work “as they should”.