Sunday, March 02, 2008

Ah, Yes. How To Define Cloud Computing...

Geva Perry, Chief Marketing Officer at GigaSpaces, wrote an article that has the tiny cloud computing community I follow a-buzzing. In it, Geva essentially makes the argument that utility computing is a business model (which, at its heart, it is), and cloud computing is a technology; specifically, so-called grid computing technologies.

Now, as you may know, I'm the father of two small children (an infant and a 3 1/2 year old), so I wasn't able to take the time to respond promptly. Thank goodness Simon Wardley was. His post breaking down SaaS, utility computing, cloud computing and virtualization is an enlightening one. For the most part, I agree with how he characterized everything, so I won't simply restate his post here.

(Damn. That's two references to Simon's blog in a row. Am I becoming a groupie? :)

The one area that I'd like to explore, however, is the specific definition of cloud computing. When you see folks like Geva and Simon talk about a "computing grid" in relation to cloud computing, you must be careful not to confuse that definition of "grid" with the "high performance computing" definition that many in the IT industry maintain. (Like who? Check out I want to challenge everyone who sees cloud computing as either "grid computing gone wild", or "virtualization applied to everything" to step back a second and look at the bigger picture.

Eric Schmidt is widely credited for raising the term "cloud" into the mainstream IT lexicon. (He almost certainly didn't invent it, but there is clear evidence that he understood the effects of increasing bandwidth on computing years ago, and successfully challenged the world to imagine the "cloud".) So I think its only fair to examine Eric's vision of what cloud computing would be. Here is his full response to the simple question of what Google sees Web 3.0 being:

Now, I will grant that his answer is tilted a little bit to what the user experience of the cloud will be in the next generation, but I think his argument that the next phase of cloud computing is a fundamental shift in software development is an excellent one. Change it to a fundamental shift in software development and deployment, and it goes to the heart of my own definition of cloud computing.

(Lest you think equating Eric's Web 3.0 to cloud computing in general is a stretch, check out Nick Carr's analysis on Eric's comments.)

Cloud Computing: One Man's Definition

Cloud computing describes a systems architecture. Period. This particular architecture assumes nothing about the physical location, internal composition or ownership of its component parts. It represents the entire computing stack from software to hardware, though system boundaries (e.g. where does one system stop and another begin) may be difficult to define. Components are simply integrated or consumed as need requires and economics allow.

There are two key sub-architectures, in my opinion: the functional architecture, and the deployment architecture.
  • The functional architecture is traditional software stuff, and can (but is not required to) include elements like service orientation, recombination (e.g. "mashups") and loosely coupled integration (both within and across organizational boundaries).

  • The deployment architecture includes all of the supporting components that allow the functional architecture to operate. This obviously includes both physical and virtual infrastructure (including servers, networks and storage), but may also include such software elements as middleware, enterprise service buses or various service automation platforms.

Demand for this architecture is driven by technology organizations who seek increased access, quicker innovation and reduced cost within the software and infrastructure marketplace. Now, you may go back and look at both Geva's post and Simon's post, and say "um, what's different about your definition except semantics?" Well, I feel my definition is broader than either of theirs. To me, SaaS is an element of the cloud. So are PaaS and HaaS. So is software designed to run in optimized infrastructure, as well as software deployed in capacity provided by an external supplier/utility.

The key thing isn't "how does it work", but "how can I use it".

And, again, as the others have noted, cloud computing is not synonymous with software as a service, utility computing, virtualization or even grid computing. Rather, each of those are models that can be applied to this systems architecture (as well as several others, really), and utilized to deliver a user experience and economics that will--some day, many years from now--change the world.

By the way, as several others have noted, we aren't there yet.

No comments: