The Intercloud is a global cloud of clouds

Few of us will dispute that:

The Internet is a global network of networks

So it logically follows that:

The Intercloud is a global cloud of clouds

It’s amazing to think that the Internet kept us busy for two decades or so just by delivering the ability to pass messsages between any two (or more) clients, and to consider all the things we’ve managed to achieve with this seemingly simple advance. It seems only yesterday I had one of the first private Internet connections in Australia (courtesy DIALix – the country’s first commercial ISP) and was able to communicate with others around the globe (in real-time courtesy [y]talk – responsiveness we still haven’t managed to faithfully replicate with today’s instant messaging networks!). But now it’s time to take the Internet to the next level.

While the servers scaled up as the masses poured in it wasn’t long before we reached a glass ceiling – clearly vertical scalability wasn’t the way forward. Sure you can build big machines (after all, mainframes and minicomputers were fresh in our minds) but it’s like driving a boat – after a certain point you’ll use an order of magnitude more fuel to go only a fraction faster (think of the cost of big iron vs commodity white boxes).

By now I was a university sysadmin and the dot-com bust was still a few years away. Officially I was busy setting up Aurema’s Share II (since acquired by Citrix) on a pair of SGI Origin servers so as UNSW’s Maths Department and the Australian Graduate School of Management (AGSM) could “fair share” the hardware they’d purchased together. Unofficially I was experimenting with making ~150 overpowered but under-used Pentium-II workstations appear as one (using Debian GNU/Linux, bpbatch aka Rembo aka IBM Tivoli and tools like PVM). I knew which approach I preferred but unfortunately the machines lived out their lives idling as X terminals and I went to work on dot-coms and the Sydney 2000 Olympics.

Enter Google, Amazon and others (e.g. the entire grid community) who worked out how to make horizontal scalability work properly with toys like BigTable (A Distributed Storage System for Structured Data) and MapReduce (Simplified Data Processing on Large Clusters). It was finally possible to build services that could scale endlessly, allowing these pioneers to innovate without looking over their shoulders after becoming victims of their own success. We know how that worked out for them (after all the world only needs five computers, right?) – today we have computing powerhouses sprinkled around the Internet run by companies like Google and Amazon while everyone else is playing musical chairs and hoping they won’t wind up without a seat.

To use the electricity grid analogy, the Internet is like the grid itself – that is, the network of wires and power stations that connect everything together. One can poke electrons in one side and know ekectrons will pop out the other, even if various links are severed. Indeed that’s all we’ve needed for email, instant messaging, media streaming and of course the web itself. The problem is that a grid without power stations isn’t so interesting. Useful, yes, but certainly not exploiting the technology to the fullest extent possible. Enter cloud computing with various cloud providers (and the underlying Internet) forming the Intercloud.

So who invented the term? Who knows. Who cares. I didn’t (I’m not even the first to say it’s a “cloud of clouds“) but I have been using it pretty much since I first started talking about cloud computing and I’ve heard others like Rich Miller using it too… it was first mentioned in the press (outside of Trend Micro’s “InterCloud” security service) back in 2007 in Head in the clouds? Welcome to the future:

Although vendors talk as though there is only one Internet cloud each vendor will be running its own set of data centres that customers can use to access Internet-based information and resources which may complicate matters

Cisco have been busy popularising the term lately, presenting a “blueprint” and whipping up A Hitchhiker’s Guide to the Inter-Cloud that unsurprisingly focuses on private cloud and finds a place for their Unified Computing System. Gartner have been getting in on the action too and it seems likely that before long a bunch of other people will as well.

Although I think it’s got a snowflake’s chance in hell of displacing the Internet moniker, it may be useful for framing discussions about cloud computing interoperability and unlike many of the other terms that have popped up may actually serve some purpose (surely IBM of all people should know that whenever someone says “CloudBurst” $GOD kills a kitten).

If we’re to realise the full value of cloud computing it will be by loosely coupled “aggregation” (as distinct from integration) of various offerings rather than putting all our eggs in one basket with a single provider. We don’t expect Microsoft to provide the best software for every task (hence products like Adobe Photoshop and Autodesk’s AutoCAD) so why expect less heterogeneity in the cloud?

Introducing the Cloud Computing Stack (2009 Edition)

Those of you watching the Open Cloud Computing Interface (OCCI) mailing list over the weekend may have spotted the Resource Types: Compute / Network / Storage thread which the cloud computing stack was discussed. Although a little off topic it was useful for framing the first use case for OCCI (Cloud Infrastructure Serivces aka IaaS) and the result of the discussion was some refinement of my cloud computing stack that Wikipedia’s cloud computing article (among other things) is based on.

There was some contention over the use of the term “fabric” for the bottom layer given it has also been used with platforms like Azure, so thanks to Alexis Richardson for suggesting the (obvious) “Servers” replacement. While not perfect I can’t think of anything better, and it fits nicely with “Clients” at the top layer, making this a fully functional taxonomy for cloud computing.

Other changes include pushing “storage” down into the infrastructure layer and “services” into the platform layer (ignoring mashups and the like for the sake of clarity) and sticking with the application layer after considering changing it to “software”.

It’s available under the new Creative Commons Zero license (essentially public domain).

Cloud Computing Types: Public Cloud, Hybrid Cloud, Private Cloud

It’s no secret that I don’t very much like this whole private cloud or internal cloud concept (see here and here), on the basis that while advanced virtualisation technologies are valuable to businesses they are a severe short sell of what cloud computing is ultimately capable of. The electricity grid took over from the on-site generators very quickly and I expect cloud computing to do the same with respect to private servers, racks and datacenters. Provided that is the concept is not co-opted by threatened vendors pushing solutions that they claim are “just like cloud computing, only better”. The potential for cheap, commoditised computing resources far outweighs the benefits of in-house installations which carry few of the benefits that makes cloud computing so interesting (e.g. no capex, minimal support, access anywhere anytime, no peak load engineering, shared costs, etc.).

If you look at the overwhelming amount of coverage of cloud computing in the traditional sense versus the recent sporadic appearances of articles about private/internal clouds then the latter is what us Wikipedians call a fringe theory, and I’ve just treated it as such in the article (see below).

Interesting thing is this editor who appeared on the scene at the cloud computing article recently… Initially they sought to water down the references to open source software (which currently powers the overwhelming majority of cloud computing installations, e.g. Google, Salesforce and Amazon) but then they moved on to declaring that the very definition of cloud computing should be changed to accommodate private clouds (which is not going to happen so long as the overwhelming majority of reliable sources equate “cloud” to “Internet”).

The conflict of interest alarm bells were ringing already but it wasn’t until they pressed on with this change despite the absense of a consensus and protests from other editors that they were pushed to disclose affiliations. It was the redefining of “network computing” (an Oracle-ism and trademark from over a decade ago) to be a synonym for “cloud computing” using questionable sources that gave the game away and it wasn’t long before the editor revealed their identity as a Senior Software Architect at Oracle in the bay area.

That in itself isn’t a huge problem, after all conflict of interest is a behavioural guideline rather than a policy, but it is when there are associated policy violations like verifiability and neutral point of view as there were here. I’m still not sure what to make of Oracle’s new-found interest in cloud computing, especially after CEO Larry Ellison heavily criticised it in a speech last year, and it troubles me somewhat that these shenanigans are going on during business hours (I’d hate to think that they were assigned the task of “fixing” the article), but for now I’m assuming good faith and waiting to see what this editor comes up with next.

Anyway the result is that they’ve got their mention of private cloud/internal cloud, only it probably wasn’t exactly what they had in mind (that’s the law of unintended consequences for you). I’m sure this will be quite controversial with “I can’t believe it’s not cloud” vendors and their cronies but it’s supported by reliable sources and I believe an accurate representation of the consensus view. The term “private cloud”, so far as I am concerned, borders on deceptive advertising as it fails to deliver on the potential of cloud computing and those who attempt to use it to hang on the coat-tails of cloud computing should expect resistance.

All is not lost though, as most of what people are calling “private clouds” have some “public cloud” aspect (even if just the future possibility to migrate) and can be classed as a “hybrid cloud” architecture. Indeed according to the likes of HP, Citrix and Nicholas Carr (and myself) most large enterprises will be looking to run a hybrid architecture for upto 5-10 years (though many early adopters have already taken the plunge). Yes it’s semantic but the important difference is that you’re not claiming to be a drop in replacement for cloud computing, rather a component of it. You can expect a lot less resistance from cloud computing partisans as a result.

As usual the diagram is available under a Creative Commons Attribution ShareAlike 3.0 license in PNG and SVG formats from the Wikimedia Commons (Cloud computing types.svg) so free to use it in your own documents, presentations, etc.

Types

Public cloud
Public cloud or external cloud describes cloud computing in the traditional mainstream sense, whereby resources are dynamically provisioned on a fine-grained, self-service basis over the Internet, via web applications/web services, from an off-site third-party provider who shares resources and bills on a fine-grained utility computing basis.

Hybrid cloud
A hybrid cloud environment consisting of multiple internal and/or external providers¬†“will be typical for most enterprises”.

Private cloud
Private cloud and internal cloud are neologisms that some vendors have recently used to describe offerings that emulate cloud computing on private networks. These (typically virtualisation automation) products claim to “deliver some benefits of cloud computing without the pitfalls”, capitalising on data security, corporate governance, and reliability concerns. They have been criticised on the basis that users “still have to buy, build, and manage them” and as such do not benefit from lower up-front capital costs and less hands-on management, essentially “[lacking] the economic model that makes cloud computing such an intriguing concept”.

While an analyst predicted in 2008 that private cloud networks would be the future of corporate IT,¬†there is some contention as to whether they are a reality even within the same firm.¬†Analysts also claim that within five years a “huge percentage” of small and medium enterprises will get most of their computing resources from external cloud computing providers as they “will not have economies of scale to make it worth staying in the IT business” or be able to afford private clouds.

The term has also been used in the logical rather than physical sense, for example in reference to platform as a service offerings.

Update: This article was featured on CircleID on 6 March 2009.

The Cloud and Cloud Computing consensus definition?

“Cloud Computing is the realisation of Internet (‘Cloud’) based development and use of computer technology (‘Computing’) delivered by an ecosystem of providers.”

It’s amazing that such a simple concept has caused so much confusion, but having spent the last few days reviewing the recent discussions it seems many are falling into the trap of trying to align Cloud Computing with (or contrast it against) existing terminology like SaaS and Utility Computing. It is in fact far more suitable as an umbrella term encompassing all of these related components.

‘The Cloud’

While there can be multiple definitions for Cloud Computing, for The Cloud itself ‘there can be only one‘ as it’s a metaphor for the Internet; people talking about clouds (plural) are probably confusing it with grids. Yes you can replicate some of this in a ‘private cloud’, but it will always be exactly that: a replica, and it will likely be somehow connected to (and therefore part of) the real cloud anyway. Remember, much of the value of Cloud Computing comes from leveraging other services in The Cloud for a result greater than the sum of its parts.

Why ‘The Cloud’?

Remember all those network diagrams with a fluffy cloud in the middle? Why a cloud and not a black box or some other device? Because we simply don’t know, and better yet we don’t need to know, what goes on in there – we just pass a packet down our pipe and (most of the time) it arrives at its destination. This is an abstraction (in reality the Internet is an incredibly complex beast) but an important one; it significantly reduces the complexity of our systems; a good example is relatively simple VPNs having quickly displaced many complex WANs.

Defininition

Let’s break down my definition (which I came to by collating the assertions that were in line with my view and then boiling the result down to the basic common elements):

“Cloud Computing…

  • …is the realisation of
    While many of the requisite components have been available in various forms for some time (eg Software as a Service, Utility Computing, Web Services, Web 2.0, etc.) it is only now they are reaching critical mass that the Cloud Computing concept is working its way into the mainstream. As more of a collection of trends (a ‘metatrend‘) we still have some way to go yet, but Cloud Computing solutions are a reality today and will rapidly mature and expand into virtually every corner of our lives and enterprises.
  • …Internet (‘Cloud’) based…
    Although some have [ab]used the ‘Cloud Computing’ term in reference to infrastructure (particularly grid computing, like Amazon’s pioneering Elastic Compute Cloud), much of its value is derived from the universal connectivity of the Internet; between businesses (B2B e.g. Web Services like Amazon Web Services), businesses and consumers (B2C e.g. Web 2.0 like Google Apps) and between consumers themselves (C2C e.g. peer to peer like BitTorrent). Many of us are now connected to ‘The Cloud’ where we work (office), rest (home) and play (mobile) and there are solutions (eg Gears) for when we are not.
  • …development and use of computer technology’…
    an accepted, all-encompassing definition of computing – there are very few areas which will not be affected in some way by Cloud Computing so I’ve gone for the broadest possible definition.
  • …delivered by an ecosystem of providers.
    While it is possible to enjoy some of the advantages using a single provider (eg Google), it is hard to imagine a functionally complete solution which does not draw on multiple providers (in much the same way as we install task-specific applications onto our legacy computers). Your electricity is almost certainly generated by wholesale providers who pump it into the grid and similarly Cloud Computing will typically be delivered by layered (eg Smugmug on Amazon S3) and/or interconnected (eg Facebook<->Twitter) systems.

Cloud Computing Architecture

Cloud Computing is typically universally accessible, massively scalable (with vast pools of multi-tenant ‘on-demand’ resources), highly reliable (see my TrustSaaS site for proof that the main services are up over 99% of the time), cost effective and utility priced with low barriers to entry (eg capital expenditure, professional services), but none of these attributes are absolute requirements (no, not even massive scalability – even an esoteric web service may still be an absolute requirement for a small handful of users and thus an important part of the ecosystem).

Cloud Computing architecture looks something like this, with layers similar to the OSI networking stack:

Services Client which consumes these applications via a browser and/or programmatically
Composite (Composite Applications or Mashups) which are linked together using APIs like REST (eg TrustSaaS), in much the same way as ‘pipes’ are used in Unix to create arbitrarily complex systems from simple tools
Software Application which ideally follow proven Unix philosophy of ‘do one thing and do it well‘, but which may grow quite complex
Platform on which applications are built, including the language itself (eg Java, Python) as well as supporting systems like storage
Hardware Infrastructure consisting of the physical computing resources (and virtualisation layer(s) at the hardware and/or operating system layers)
Networking courtesy the existing Internet (eg TCP/IP)

Cloud Computing Components

Although many of these are solutions to the same problems, most of them are actually components of Cloud Computing, rather than Cloud Computing itself (working from the ground up):

  • Grid computing, any network of loosely-coupled computers acting in concert, is mostly concerned with tackling complexity and improving managability of computing resources (for example, production servers not being taken down by server failures or routine maintenance). You’ll find grids outside of Cloud Computing architectures, though there is a [vendor driven] tendency to confuse the two (particularly where some intelligent/autonomic management aspects are involved). Don’t make this mistake yourself; although many Cloud Computing systems are based on grids because their scalability needs can only be satisfied by horizontal scaling (usually involving thousands of commodity grade PCs), these are very different animals.
  • Virtualisation (in the Cloud Computing context), which allows you to deploy a virtual server where you might otherwise have provisioned physical hardware, is an enabler for Infrastructure as a Service (IaaS). Increased automation of operating system and application deployment is pushing the interface further and further up towards the application layer itself (eg Desktone‘s Desktop as a Service).
  • Infrastructure as a Service (IaaS) (Amazon EC2, GoGrid, AppNexus) While Internet (‘cloud’) connected grids are particularly useful (and a natural progression for virtualisation and SOA solutions being rolled out en-masse in enterprises today), implying that this is somehow equivalent to cloud computing is too narrow a view. Integrate a SaaS/Utility style billing system to a traditional grid and you’ve got Infrastructure as a Service (IaaS). These are more cost effective, reliable, scalable and user friendly than their disconnected counterparts and are one big step closer to the panacea of autonomic computing. Expect to see existing ‘virtual infrastrucutre’ providers like VMware and Citrix seamlessly complementing on-premises solutions with cloud based services.
  • Platform as a Service (PaaS) (Google’s AppEngine, Salesforce’s force.com, Heroku, Joyent, Rackspace’s Mosso): takes grid computing to the next level of abstraction by pushing the interface up to the platform or ‘stack’ on which applications themselves are built (eg Django, Ruby on Rails, Apex Code). This is primarily interesting for developers and power users and is an increasingly important component of the cloud computing ecosystem. It allows them to focus on development without the overhead of hardware and operating system maintenance, database tuning, load balancing, network connectivity etc. while exposing technology like BigTable (and massive scalability) which might not otherwise be available to them. More importantly, it eliminates capital expenditure requirements, allowing boutique Independent Software Vendors like us to ‘stay in the game’.
  • Utility Computing (Amazon S3) is more about a ‘utility’ (gas, water, electricity) pricing model, yet one can derive the benefits of cloud computing with a more traditional pricing model, or indeed without having to pay for it at all (consider Google’s AppEngine for example, where it’s utility-style pricing only applies to the more demanding users).
  • Web Services (Amazon Web Services): ‘the ‘glue’ that holds cloud computing components together’, are finally maturing and being adopted ‘en-masse’ thanks in no small part to simplification by way of protocols like REST, commercilisation by providers like Amazon (Jeff Bezos’ Risky Bet) and the abundance of web toolkits (e.g. Ruby on Rails) which lower the barrier to entry by providing native support. You can do everything from payments to ‘human intelligence tasks‘ with Web Services now and mashups rely on them heavily to make products that are greater than the sum of their parts. Companies like Ariba and Rearden Commerce are taking this to the extreme.
  • Web 2.0 (Wikipedia, Facebook, WebEx) which while a force in itself, deals more with making the web ‘read/write’, shifting power towards the consumer and leveraging their collective energy. While AJaX does a lot to make this environment more user friendly, the underlying theme is turning the ‘reader’ into a ‘contributor’. Most of the players in cloud computing exhibit Web 2.0 attributes.
  • Software as a Service (SaaS): (Google Apps, Salesforce CRM) falls under the cloud computing umbrella and is a primary component, but to align the two definitions is too narrow a view. SaaS is typically sold per user as pizza is per slice, but what is more important is that it is implemented and maintained by a provider who handles much of the complexity of running software on your behalf (eg scaling, backups, updates, etc.).
  • ‘Cloud’ System Integrators (Australian Online Solutions) and consultancies deploy the various components, make them work in concert together (using services like RightScale), integrate them to each other and with legacy systems using the exposed APIs as well as migrating data (eg email, calendars, contacts, documents, etc.) so that users can ‘hit the ground running’ and continue to collaborate efficiently with those who have not yet migrated ‘to the cloud’. Seamless migration is a reality today, and a critical component for cloud adoption.

Cloud Computing Today

The Cloud Computing revolution is upon us. Expect it to rapidly proliferate your enterprise, with much of the drive coming from individual grassroots users (who are almost certainly already improving operational efficiency with Web 2.0 tools like Google, Salesforce and WebEx) so plan accordingly. It must be embraced for competitiveness rather than resisted (in much the same way as the PC was embraced decades ago) but it also requires careful governance and change management by experts. Low risk, high return offerings like messaging and web security are available for those who want to ‘test the water’ without opting for a complete Enterprise 2.0 deployment.

The draw of loosely coupled, massively scalable services will eventually result in most enterprises being swallowed by the cloud (or by more agile, possibly ‘digital native’ competitors who already were), or at least becoming nodes on it; indeed many already have. Barriers to adoption (eg offline support, security and compliance services) are being torn down every day and practical solutions exist for those that remain (eg encryption) so there are less and less reasons to sit on the sidelines.

Even the largest of enterprises are now starting to jump (typically having completed controlled pilots) and just as company officers would have difficulty explaining downtime losses caused by continuing to generate their own power after cheap, reliable utility electricity became available, shareholders will not accept companies wasting resources on commotitised infrastructure rather than focusing on their core competencies.

Thanks to Jeff Kaplan, Markus Klems, Reuven Cohen, Douglas Gourlay, Praising Gaw, Jimmy Pike, Damon Edwards, Brian de Haaf, Ben Kepes, Jack van Hoof, Kirill Sheynkman, Ken Ostreich, James Urquhart, Thorsten von Eicken, Omar Sultan, Nick Carr and others for their inadvertent contributions.

This article [was] also available as a Google Knol: Cloud Computing.