There’s a problem with falling in love with a new technology: it starts to look like a hammer. And when you’re holding a hammer everything starts to look like a nail. That was where I found myself after being introduced to Amazon’s EC2 “cloud computing” technology at a recent NY Tech Meetup. I started to look at every software problem, and in fact every technical problem with an eye toward “how can I solve this with EC2?”. Need a hosting solution? Do it with EC2. Rip some tracks from CDs? I’m sure there must be a way to do that with EC2. My internet connection at home seems slow…EC2 must be able to help me somehow. Sadly I don’t think EC2 is going to help me download Lost episodes from abc.com faster any time soon, but what it can do is impressive.
They Put Me in the Mix
I had heard EC2 and cloud computing mentioned in a few articles and blog posts but paid it no mind. “Cloud computing” to me was useful only for the kind of work done by huge computational efforts like SETI@home’s search for extraterrestrial life or Folding@home’s work on understanding disease. “Give me the square root of 853789548795598″, etc. Egghead stuff. So it was a smart move on Amazon’s part to fly their web service evangelist Jinesh Varia from Seattle to New York to make a 7 minute presentation on EC2, because without it who knows how long it would have been before I discovered the truth of EC2. In a nutshell, Amazon is giving you root access to a Virtual Private Server that can be customized and replicated on other EC2 VPS’s at will. Login, install software, save system image, replicate. Wow. I’ve never seen app hosting so close to “just add water”. I went home and immediately signed up for an Amazon web service account.
Let’s Get It Started
Signing up and getting started with EC2 was staggeringly easy. The first thing Amazon did right was to structure their pricing so as to have zero barrier-to-entry. The cost is essentially $0.10 per server-hour. No startup fee. If you want to see what the hype is all about, by all means set up an account and play around for three hours. Your bill? A staggering $0.30. The second thing they did right was to provide an extremely well-written getting started guide. Somebody at Amazon realized that a great service won’t pick up adopters if learning how to use it is difficult. They also provide several pre-made system images (all running Fedora Core 4 Linux) which you can instantiate at will. Within 3 hours of signing up I had my own EC2 instance with it’s own IP address running Apache and serving up a dinky page I had made.
So my original infatuation aside, what should EC2 be used for? Most obviously EC2 is perfect for scaling applications that require more bandwidth, memory, or CPU power than a single server could practically provide. This is the most obvious use for a distributed computing platform and the one that Amazon seems to be talking up the most. More interesting I think are the somewhat less obvious uses. I very quickly found myself using EC2 for software “what if” scenarios. Software installs, load testing, and architecture experiments are all perfect uses for EC2. I don’t have to worry about doing things right the first time because a brand new instance is two minutes away. I can perfect installs, hit an app with a massive barrage of tests, and change system-level configuation all in a throw-away environment before doing it somewhere important.
The ability to pack up a server into a nice AMI (Amazon Machine Image) file also creates another opportunity: it takes all the work someone puts into configuring a server and wraps it up for others. Check out a slice of what Amazon lists on their public AMI directory: a Movable Type 4.0 server, an Ubuntu server configured for Ruby on Rails, a Helix DNA server for streaming media. Free software may be free but that doesn’t mean it doesn’t have associated cost. Amazon clearly recognizes this as their latest API release supports making your packaged AMIs available to others for a price. After spending hours installing software onto a server loaded from their standard bare Fedora images, I can testify that I’d pay for someone else’s ready-to-go image so I can focus on the software I’m trying to write.
I’d say the primary limitation of EC2 isn’t a limitation of EC2 at all but of the software you install on top. The technical hurdles to running instance after instance are essentially nil, it’s the licensing that keeps you from ultimate server bliss. Run all the Linux with Apache you want but as soon as you add proprietary software to the mix the party ends, to the sound of the needle being pulled off a record player that has been used in every movie with a party in it since 1982. There’s nothing technical stopping you from creating an image of a Windows server running your ColdFusion app and having it ready to deploy to n servers at a moment’s notice in case of serious load. But done by the book the licensing costs of such a strategy quickly make it impractical. EC2 could end up being a huge boon to adoption of open source platforms. As developers and small businesses who have never had the resources to run more than one or two servers can now afford dozens, the choice of open source becomes all the more appealing.
Something else that bares consideration is that you are basing your app on a platform that could arbitrarily raise prices or close down tomorrow, although you face this risk with any traditional service provider. You could find yourself scrambling to buy some servers and get them set up at a colo facility if EC2 computing nirvana disappears with little warning. Still, if the business model is viable Amazon can expect to see competitors cropping up who could offer a place to go if they become less hospitable. This would actually be good for Amazon, as it would validate the investment they’ve made in the concept and create a sense of safety for those looking to move their apps to this hosting model.
It’s All Good
There are other things I’d like to know about EC2. How will Amazon keep spammers and troublemakers from renting EC2 servers for their mischief? What happens in December when holiday shopping pushes Amazon to use more of their spare server resources, does my ability to use EC2 suffer? There are certainly unknowns at this point but everything I’ve seen with EC2 up to this point shows attention to detail and a clear sense of vision. I’m looking forward to seeing what direction EC2 takes over the next few months. Maybe they’ll even figure out how to get me Lost season 4 episodes before they’re even produced.