The most recent in a long string of technology fashion trends, "the cloud" is hot. Like its hot technology fashion predecessors, it mostly consists of old ideas with a little spicy sauce on top and fresh packaging. If you mindlessly follow the fashion and just "go to the cloud," you are likely to end up in the same unhappy place where most mindless followers of fashion trends end up. What is "the cloud?" Simple. Clouds are belated enterprise IT implementations of the consumer internet.
What is the Cloud?
Is the "cloud" a new development? Well, it is a new name...
Ancient Clouds
I first encountered the cloud more than 40 years ago. Before that fateful meeting, my only experience with computers had been up close and personal. You had to get in the room, push buttons, flick switches, feed card decks or punched paper tape, listen to whirring sounds and watch blinking lights. Like with this computer:
But The Cloud! Ahhh, the Cloud...I remember it vividly.
Of course, things were a bit different then. We only had "fat clients," as in "takes two guys to lug it" fat. The principle was identical, however: I was in one place, with a "fat client" like this:
...and in another place was a computer like this:
...and everything worked.
Remember the importance of labelling, however: what we did 40 years ago wasn't "cloud computing," which hadn't been "invented" yet -- it was merely "telecommunications."
Creating the Modern Cloud
Between then and now, lots of iterations of Moore's Law have come and gone. All the hardware has gotten smaller, cheaper and faster, while the software has gotten larger, more expensive and slower -- but, fortunately for all of us, the rate of hardware evolution is greater than the rate of software devolution, giving the impression of net progress.
Where this leaves us, 40 years later, is faster remote computers talking with lighter remote clients over incredibly faster networks, all at lower cost. Sprinkle with a little extra software and drizzle with some marketing hoo-haw, and -- kazaam! -- you've got today's hottest technology fashion trend, Cloud Computing.
Clouds aren't always friendly
When we think of clouds, we're likely to think of this kind of cloud:
friendly, fluffy shapes floating in an otherwise sunny sky. When people think about cloud computing, this is the kind of cloud they seem to have in mind. But as we know, there are other kinds of clouds. There are dark, oppressive clouds that make everyone depressed. And there are really mean clouds, that wreck things horribly, creating the situations for which "disaster recovery plans" are made. Is this just a metaphor? Of course not. But just like financial fraud, the big, juicy examples are usually hushed up in order to protect the guilty.
OK, so What is "the Cloud"
There is a little-discussed trend that is deeply embarassing to IT professionals: there is a wide and growing gap between the use of computing technology in the consumer world and in the corporate, data center world. When the average user of corporate data systems is home, he works in a very advanced computing environment. His local machines and devices are amazingly capable and pretty easy to use. When connected to the internet, he can access a nearly limitless world of cloud computing resources -- which are themselves largely run out of data centers that are remote from the people who set up and administer the software in them, and which contain an ever-evolving mix of dedicated and shared resources and services. The consumer internet has been based on a cloud computing model for a long time.
The corporate world is a whole different thing. The corporate world has been consumed with consolidating their diverse data centers. They are finally beginning to confront the extreme flexibility and ease of use that consumers enjoy every day, and are finding it increasingly difficult to explain why the computing they run with such high capital and operating costs are so cumbersome, error-prone and inflexible.
In this context, there is no way that anyone associated with corporate computing is ever going to plainly admit that what they are basically doing is trying to catch up with the consumer internet. So they must be doing something else. Oh, yeah -- they're evolving to the latest, smartest trend in corporate computing, adopting the latest technologies and being really leading-edge: they're "moving to the cloud," but of course in a "smart" way, with large doses of "private cloud" technology along the way.
Summary
What's a "private cloud?" A corporate data center with a fancier name.
What's a corporation "moving to the cloud?" A corporate IT group trying to play catch-up with the consumer internet, and desperately trying to make it look like something else.
What's new about "cloud computing?" Very little; mostly naming and marketing fluff.
Is anything real happening when a corporation "moves to the cloud?" Sometimes yes! Sometimes, they really are copying a couple proven techniques of the consumer internet, slowly and at great cost and trouble, but nonetheless creeping towards a 21st century computing model.
Most of this is true but the one thing that sets a cloud aside from just a big datacenter is that all common operations are API controlled.
Instead of logging into 100s of switches and making painstaking changes you do a simple API call.
Instead of racking load balancers and editing some vendor specific CLI you make an API call.
These APIs let you do things a bit differently, you do not build your long running servers that stick around for 3 years and demand careful care and loving. You simply build an entirely new copy of infra that is running the next version of your app.
This means things like continuous integration is possible that doesn't just concern itself with code but with the infrastructure as a whole. It's not uncommon to see a team using something like Jenkins to build and destroy complete end to end infrastructures complete with load balancers, dns, databases, SAN storage etc only to run a set of tests and then tear the whole thing down having only invested in 1 hour worth of usage.
Imagine the old days where developers machines simply never matched production. Now you can literally give each developer an entire prod like behavior that is built from scratch this morning. No longer are they out of date or not maintained, they are built automatically from the same configuration management rules as the production systems.
It's this agility - among many other things - that sets a cloud apart from just a bunch of machines in a old school DC.
Posted by: R.I.Pienaar | 12/02/2011 at 02:59 AM
Your point is well taken, and I agree with it. However, I'd just like to point out that it's quite possible for companies to move to cloud infrastructures without the wonderful automation you describe, and it's also the case that this kind of automation was possible and was in fact implemented (albeit not often) in pre-cloud days.
I love your specific example: an automatically built developer environment that exactly matches production. Although not often done, this has always been a great way to go, and I'm delighted to see its use rise in "cloud" environments.
I am no supporter of heavily customized and manual DC's no matter what buzzwords are used.
Posted by: David B. Black | 12/02/2011 at 10:12 AM
Yeah you get a large a number of people who approach the cloud like they would a normal data center deploy and this is a mistake.
The availability pattern of say Amazon cloud is such that you _have_ to build with rapid failure and recovery in mind and this force you down the line of automation
The performance pattern of Amazon is such that you _have_ to use newer types of databases and not be built on relational databases, hence the Cambrian explosion of NoSQL databases thesedays all trying to find the right balance in what of the pillars of CAP they can ignore and still be suitable to at least some narrow set of use cases. This force you down the line of being an extremely metrics driven production setup. For which today tools in the monitoring space just doesnt cut it, so all the big shops literally build their own monitoring.
Those who embrace the model outlined above find the cloud a good - albeit not cheap as thats a whole lot of engineering investment - place to live in, those who don't invest in the agility finds that when, not if, it fails they are left with downtime and frustration. They find since the only way Amazon suggest you get reliability is to deploy in multiple zones that their application is inherently more robust and resistant to failure, accepting of change etc. But this all comes at a big development cost.
Most people who jump to the cloud in a mad buzzword induced rush would probably be better off just on some VM provider like Linode vs the very dynamic and unpredictable world of Amazon.
VCs love it though cos they can shoot some struggling startup in the head in a day - no longer do they need to worry about long running multi year contracts and I think this is a huge driver for the current perceived success of the cloud era
Posted by: R.I.Pienaar | 12/02/2011 at 12:11 PM
I too agree that "Cloud" computing as a name will be aronud for a while, but the problem is from a technical standpoint we all know (as IBMers or) techies what it is and that it encompasses many things from the architecture to the off-site storage, on-demand web apps, Web2.0 et-all, but the main issue is that the "public" don't understand the concepts, the processes or the uses, they only understand the offf-site storage & more recently (due possibly to Apple) the sync possibilies. Looking at it from that point of view, the "naming" should maybe refer to what people already understand -> Hardware is the touchy-feely stuff physical and tactile.Software is the thing that makes the touchy-feely stuff come to life & do things.Middleware although more advanced, is the stuff that makes the software do even more with the hardware, So why not keep to the same lines? Air-WareIf it's marketed and described properly & well implemented & integrated then there is no reason why a naming convention along the lines of "air-ware" could not be adopted. It has the implication of being something thats there and we can't see it but we CAN use it. Just my two-penny worth
Posted by: Leonardo | 04/25/2012 at 06:11 AM
Nargess, It is ironic, ineded! Our service can to some extent be considered a cloud service; however, it does not have some of the characteristics of an advanced cloud service. I considered moving our service to the cloud, but unfortunately it becomes expensive for us at this point. Moreover, our podcast is not a critical service needing high reliability and I am sure our audience would not mind if we have outages like this every once in a while.
Posted by: Lhyn | 04/27/2012 at 10:42 PM