Sunday, June 26, 2011

How to define cloud computing terms and technology

A senior exec from a major IT vendor recently commented in a Freeform Dynamics industry analyst briefing that it was amazing how cloud computing was touching pretty much every part of their business and portfolio. Our response was that this is not particularly surprising, given that they had to define cloud computing in such a broad and fluffy manner. It might sound a bit harsh, but it was true.
In fact, over the course of a few hours, we heard numerous takes on how to define cloud computing from this one vendor alone. If we were new to the space, we probably would have ended up quite confused.
It would be unfair to name this vendor and single them out, as jumping on the cloud bandwagon and defining what cloud means to fit with what you have to sell is common behaviour across the vendor community at the moment. The fact that cloud is really just an umbrella term for a collection of evolutionary trends and developments, rather than some single specific revolutionary concept, actually encourages this and provides plenty of room for abuse.
So how do we make sense of everything that is said, claimed and offered about cloud? Well, the key is to be clear on the perspective or dimension being discussed, and there are three that we find useful when doing this:
  • Technology versus services
  • Architectural stack perspective
  • Functional service taxonomy
Technology versus services
The first of these is about distinguishing between enabling technologies, such as dynamic virtualisation, automated provisioning, flexible software architectures and the systems or services that result from their exploitation.
In terms of exploitation itself, part of this is appreciating that cloud technologies can be used by service providers to create hosted services delivered "on demand" via public clouds, and by organisations directly to create so-called private clouds, i.e. flexible pools of resource within their own data centres.
Architectural stack perspective
The second view, which has its roots in the traditional systems stack, provides a useful way of understanding services from an architectural perspective. At the time of writing, this (or some variant of it) is probably the most frequently used model for categorising cloud computing services. Its limitation, however, is that it does not capture the richness of services available from providers at an adequate level of detail to form an objective view from a solution and planning perspective.
Functional service taxonomy
This gives rise to the need for the third, more pragmatic perspective, which breaks cloud computing services out into more specific functional categories:
  • Business application services: It is in this area that the term Software as a Service (SaaS)was originally coined. Services at this level are typically focused on the delivery of business process level functionality, e.g. CRM and ERP.
  • Hosted productivity tools: Services here are more concerned with horizontal capability ranging from desktop suites for end users, through to modelling, development and project management tools for analysts and developers.
  • Hosted communications/collaboration: Spearheaded initially by hosted email and Web conferencing, the number of services offerings in this area has exploded to include full unified communications and/or social media (directories, blogs, wikis, etc).
  • Trading community services: As supply chain automation has gathered momentum, traditional "exchanges" have evolved, and new services have emerged, to facilitate streamlined collaboration and transaction between trading partners.
  • Plug-in services: Myriad services exist which do not provide complete business functionality but plug into existing applications to enhance or extend them. Examples include everything from mapping to credit checking.
  • Application platform services: As an alternative to consuming pre-built services from external providers, application platform services provide development and runtime environments which allow custom applications to be built and hosted online.
  • Utility services: Sometimes, you simply want somewhere for your own software to run and store its data. This is the realm of utility services, which are essentially about providing raw compute and storage resources.
  • Operational services: This often overlooked but highly important category is where we find services concerned with online backup, archiving, security (e.g. email filtering), and even full blown monitoring and management tools.
While even this taxonomy is not exhaustive, it illustrates how, by moving beyond the more generic "as a Service" cloud computing definitions, we can make more sense of what is available and where offerings might fit into the enterprise solutions landscape.
When embarking on any cloud-related discussion, it's important to remember two things. First, most of the services on offer are designed to complement internal systems, highlighting that cloud computing is very much an evolutionary concept.
And second, services vary widely in terms of their nature. When considering relevance, fit, benefits, risks, and so on, we therefore mustn't think too generically. It is important to consider each type of service on its own specific merits to avoid missed opportunities as well as potentially damaging assumptions.