Finally things have settled down enough that we can start making some sensible statements about the taxonomy of cloud computing. The Wikipedia cloud computing article(s) in particular are now fairly stable (after countless hours of work over the recent months) and the main one has climbed its way to the top of Google’s search results for “cloud computing”. New articles like the hours-old one on RightScale are slipping in to the cloud computing category tree nicely too.
Therefore, without further ado I am pleased to announce the 6 layer Cloud Computing Stack (developed and hosted on the brand new Cloud Computing Community Wiki) in all its Creative Commons Public Domain glory. You can use it however you see fit, commercially or non-commercially, under whatever license you want and you don’t even need to give me credit for it. You can get it in SVG and PNG formats from the WikiMedia Commons, and if you’ve got the excellent OmniGraffle editor then I’ll even send you the originals if you ask nicely.
The 6 layers of the Cloud Computing Stack (from top to bottom) are:
- Clients (examples) are computer hardware and/or computer software which rely on The Cloud for application delivery, or which is specifically designed for delivery of cloud services, and which are in either case essentially useless without it.
- Services (examples) (aka Web Service) are “software system[s] designed to support interoperable machine-to-machine interaction over a network“ which may be accessed by other cloud computing components, software (eg Software plus services) or end users directly.
- Application (examples) leverages The Cloud in software architecture, often eliminating the need to install and run the application on the customer’s own computer, thus alleviating the burden of software maintenance, ongoing operation, and support.
- Platform (examples) (aka Platform as a service) (the delivery of a computing platform and/or solution stack as a service) facilitates deployment of applications without the cost and complexity of buying and managing the underlying hardware and software layers
- Storage (examples) is the delivery of data storage as a service (including database-like services), often billed on a utility computing basis (eg per gigabyte per month)
- Infrastructure (examples) (aka Infrastructure as a service) is the delivery of computer infrastructure (typically a platform virtualization environment) as a service
This finds a happy medium in that it:
- Doesn’t oversimplify like the aaSy 3 layer stack (SaaS, PaaS, IaaS)
- Doesn’t overcomplicate like the all-inclusive 11 layer stack (remember cloud computing is about hiding the complexity of the Facilities, Network, Hardware, OS, Systems Management and Development Environment layers).
- Favours ‘Application’ (as in ‘Web Application’) over ‘Software’ (which can exist on the servers with SaaS and/or the clients with software plus services).
- Ignores things cloud computing users don’t care about (most notably anything physical)
- Avoids altogether the overused ‘as a Service‘ moniker, the characteristics of which (scalability, utility billing, no capex, etc.) are common and shared with cloud computing in general.
- Resists the urge to create new terms (neologisms) unnecessarily, opting for the simplest appropriate single word possible.
I hope that this work proves useful in understanding what cloud computing is all about and how cloud computing architecture works. I also hope that these terms take over from more complex, aaSy neologisms as they’re clean, simple and they just make sense. Here’s a translation table to get you started:
- Cloud Computer, Device, etc. » Cloud Client
- Web Services » Cloud Services
- Software as a Service, Software plus Services » Cloud Application
- Platform as a Service » Cloud Platform
- Storage as a Service, Cloud Attached Storage » Cloud Storage
- Infrastructure as a Service, Hardware as a Service » Cloud Infrastructure
Update: We ended up settling on a simpler 3 layer stack after much discussion.