Cloud computing has been a buzzword for the past couple years, but what does that really mean, and why should you care?
Unless you're a developer or a system administrator, you probably don't need to care. But it might be helpful to understand just what people are talking about -- especially because you'll hear the term used to mean completely different things.
First of all, what's the cloud? The name comes from network diagrams drawn for decades, with a cloud used to depict the network outside your control -- the Internet, the telephone network, whatever it is.
That central picture of the "cloud" representing something managed outside your premises, is all that "cloud computing" really means -- you're relying on stuff provided by other people outside your control.
But wait... why is that a good thing?
The main reason people go bat-crazy over cloud computing, is that done right, the costs can be much lower than dedicating a bunch of hardware and running it yourself. The first cloud computing applications, after all, include hosted e-mail, search, and more. We're really not talking about anything new here. But here's a quick guide to the different types of cloud computing, as you'll generally hear them used. If you're evaluating a proposal heavy on cloud hype, first identify what they're talking about. I think of cloud computing as happening in 3 layers:
- Cloud applications
- Cloud platforms
- Cloud infrastructure
Here's a quick run-down:
These are perhaps better known as "Software as a service" or SAAS for the jargonophile. Think SalesForce, Mint.com, WordPress.com -- basically any service you subscribe to that fills some business (or personal) need, that somebody else manages for you.
Cloud applications are extremely cost-effective for their users -- the service provider handles all the hassles associated with maintaining everything beneath the application layer, and then spreads that cost across thousands of users. In terms of up-front cost, cloud applications are pretty difficult to beat.
The downside is control over your data. If you're looking at doing a hosted service, the first question you should ask is how easy is it to get my data out, if something goes wrong? Many, many hosted services have come and gone over the years. Google Wave tops my list of the most visible, hyped up technology you can't use anymore.
The best defense against getting locked into such a service? Pick something on an open source platform (like Drupal or Word Press) that you can take to another vendor, should something go wrong with the one you're working with.
Deeper down the stack, there's a whole new generation of application platforms that promise to make development speedy and take away all the headaches around managing your own servers. Among the most popular are Microsoft Azure, Google App Engine, and Force.com (part of SalesForce). But the most popular? Facebook. Yes, Facebook is a huge application platform in the cloud. All those games in Facebook are using it as a platform for building their application, complete with a built-in marketing channel to reach their customers.
I would argue that picking a cloud platform to build a business around puts you entirely at the mercy of the platform owner. iPhone application developers face a similar problem -- Apple can change its policies on its own whim, or decide your application competes with something they want to roll out, and simply not publish it. The cloud platform providers are typically far more permissive than Apple--but you do have to devote a lot of effort to developing platform-specific skills, and if Google decides that the App Engine isn't worth doing any more, you could find yourself up a creek.
Here's the level we actually like cloud computing: give us a virtual server, and let somebody else manage the hardware. Amazon basically invented consumer cloud computing. VMWare made this whole space possible, by creating a viable, performant way of having "virtual" servers and stacking a bunch of them on individual physical servers. Several other vendors have jumped into the fray, and we now have some open source virtualization stacks that make doing virtual servers as a commodity a reality.
At this level, you've got a few options, with cloud being the first one: leased virtual servers, leased physical servers, colocated/owned servers, or your own server in your own data center. Generally in that order of up-front cost.
Cloud servers make it inexpensive to get a dedicated server to run your application. There are hundreds, if not thousands, of hosts now offering dedicated virtual servers. We think Amazon and Rackspace are top of the heap in terms of having enough capacity to instantly scale up or down as needed, though those aren't necessarily the most cost effective when you're starting out.
The crucial question
When looking at any provider, the key question you should ask is "what happens to my business if this service goes away?"
Not enough people ask that question. Small companies can go out of business with a malicious lawsuit or a single big mistake. Even large companies may have trouble keeping your stuff online and available -- they might decide your cloud application is no longer making them money and they'll cut it, or a data center fire might take the servers hosting your virtual server offline for days -- it's happened to many huge data centers as well as Amazon.
The only real defense you have is redundancy. That's where open source has a huge advantage -- if whatever level you're outsourcing is open source, you can find another vendor to support you should you have a problem with the one you've picked. If you're using a proprietary service, be aware of what it might cost to get your data out and convert it to something else that might meet your needs.
is another big issue. Who actually "owns" the information that is stored there. The topic you brought up in the end of the article is also big. No one expects Amazon to disappear anytime soon but people thought the same thing about Lehman Brothers!
The best thing about cloud computing is that small scale business can get an access of the resources. Theese business can also expand as well as shrink as per the business need.
Well, it ain't only developers or system administrators that should care. It's also any executive in a company that "lives in a cloud." It may be cheaper but what if all your customer lists, bank account data and other important records become "vapor?"
A buddy of mine at the NSA says the only security is "airspace" between computers (read: no connectivity). I don't think this is what he meant.