Friday, October 12, 2012

Clearing up the cloud

Congratulation Mercedes! I was watching TV the other day and one of your commercials where you said your cars are "cloud powered" or "cloud enabled" or something like that came on and I knew it had happened: the use of the word cloud has officially become a joke.

Overall, I realize marketing and salespeople mean no harm when they drop the c-word, and I realize that the vast majority of consumers aren't big enough nerds to have a nuanced idea of what cloud computing is, but I definitely think there is room for some general education on what the word means, and what systems administrators hear when you say it.

If the term cloud strikes you as an old one, it's because it's been around forever. You won't get 50 pages into any networking book from the 90s before you find your first network diagram that involves something that looks like a cloud. Historically, the cloud has been used in network diagrams to signify the public internet -- the part of the network where you no longer have control.

The first definition of cloud is simply the public internet. So if your company has a presence on the public internet, congratulations! You can put cloud on as many pieces of marketing you want to.

Obviously that is not a very high bar -- just about anyone is on the internet (you bet your ass my blog is cloud powered) -- so this definition of cloud has become more like #2 at this point.

The other definition is much more interesting, but requires a little bit of digging into how the internet works. I'll do my best to keep it simple.

Amazon Web Services is a shining example of what cloud computing really is. Note that I have never actually used it before, but that's part of why it's so good: I could be torn out of my world of physical servers and trips to datacenters and thrown into a world where everything is virtually hosted by the AWS cloud of servers that I will never see or physically interact with without really feeling that much pain. Amazon built a great system of servers to sell people stuff, but then they started to say to themselves, "What else can our cool network of servers do?" and they came up with AWS. Now I question what date the projection charts say AWS will be a bigger business than amazon.com the shopping site, if it hasn't happened already.

Traditionally, if I wanted to host a website somewhere, I'd have to do it myself using my own computer resources, or I'd pay a managed hosting provider to do it. Managed hosting is the right choice for a lot of people (and we can think of Google as the managed hosting provider of this blog), but you have to live within the confines of what the provider is willing to let you do (Google won't let me install Wordpress on blogspot for some reason), and what other people you share the servers with are doing. These drawbacks are often irrelevant (I could care less how many catblogs blogger hosts), but as you design more complicated web-based software, you really start to see the advantages of managing your own hosting.

It used to be that managing your own hosting in a business environment was a much more significant cost and time undertaking than it has the potential to be now, largely because of services like AWS that make it easy. You had to hire a systems person to coordinate it all, you had to find and lease some space at a datacenter to put your servers in, you had to buy a significant amount of server and networking hardware. The scale hugely varies, but nobody would call it cheap. I'd ballpark a full cabinet in a nice datacenter with a reasonable amount of bandwidth as bare minimum $1,000 per month, probably closer to $1,500, and definitely with 2-3 year contracts attached. That's just the rent, humans and hardware not included.

Another disadvantage to managing your own servers is that you have to worry about a lot of things that aren't necessarily top concerns at managed hosting places. For example, suddenly you are responsible for all the redundancy that must be built into your servers in expectation of hardware failing, you are responsible for keeping your backups running consistently and knowing how to use them, you are responsible for figuring out how to serve your clients traffic if your entire datacenter goes offline -- which definitely happens (though good luck getting a good datacenter sales guy to even acknowledge the possibility of it happening).

I'm not saying all managed hosting providers are competently on top of all these major issues (some certainly are), but at least they aren't entirely your responsibility.

This is where AWS comes in. Instead of having to deal with your own physical servers located in datacenters, what if Amazon told you they could sell you some of their unused capacity and you could treat it exactly as if it were your own computer? And you'd be charged based solely on usage. And it can scale as big as amazon.com which is infinitely for all intents and purposes. And it can handle catastrophic failures because it is big enough to be designed to. That is what AWS offers.

This is cloud computing: servers that scale immediately and pretty much infinitely, located in geographically distinct locations in case of major catastrophes, and have the ability to heal themselves within some generous limits.

It would be like if your Mercedes SL sports car suddenly turned into a G people-mover when you had more passengers to transport. Or if you got a flat tire, an identical Mercedes would appear within a few seconds and seamlessly move you and your passengers into the working vehicle. Now that is a cloud powered Mercedes!

Managed hosting is still the right choice for a lot of people. AWS is the right choice for a hugely increasing number of people. Hosting your own hardware is the right choice for another significant chunk of people. For now, the tech world is respectably split into these categories and none hold a significant monopoly, but I have a feeling that will change as AWS puts managed hosting out of business, and companies can't resist the appeal of doing things cheaper in AWS instead of managing it by themselves entirely.

No matter what you do, you are technically "cloud powered" to some extent if you are on the internet, but marketers and, more importantly, sales people need to understand when you drop the word cloud on a nerd who manages private clouds, or one that manages servers within a public cloud, you are using an extremely loaded term -- certainly not one that has any business being applied to cars.

Finally, I have used AWS as my sole example of a cloud computing provider in this post, but there are plenty of competitors, and the number is growing daily. I am still of the school that does everything in-house and I think I like it, but I do get jealous of my systems friends who provision very large servers with a few dozen keystrokes, while I have provision large servers by researching exactly what hardware I want, convincing my bosses it's a good idea to buy then, lugging them to the datacenter, getting them mounted and cabled properly, installing them, and networking them.