Welcome to the first in this series of blogs regarding Cloud computing. In this article, the origins of Cloud computing will be explained, followed by a brief examination of technical definitions, and the various service types of Cloud computing on offer.
Cloud computing technology is not new and innovative; its origins can be traced back to the 1960s. The MULTICS (Multiplexed Information and Computing Service) was developed by MIT for project MAC, while Bell Telephone Laboratories and General Electric Company’s Large Computer Products Division were also early adopters of the technology.
In the 1990’s Grid computing was proposed as a way to link and share computing resources.
When the dot-com bubble burst (1997-2000) there was an abundance of under-utilised large scale data centres with excess computing resources. Large (frequently global) corporations needed to recoup the money that had been invested in the hardware and the infrastructure to house it. Out of necessity, the notion to apply virtualisation technology and sell existing computing power and capacity gave birth to what is today called Cloud computing.
That’s is a very brief history of Cloud computing hence the reason Larry Ellison, founder of Oracle commented,
“We’ve redefined Cloud Computing to include everything that we already do…I don’t understand what we would do differently in the light of Cloud Computing other than change the wording of some of our ads…”
Continuing the theme that Cloud Computing is merely a name update Richard Stallman (GNU) said “It’s stupidity. It is worse than stupidity: it’s a marketing hype campaign.”
Although both of the views above have merit, it would be a disservice to dismiss the Cloud computing concept as merely a marketing exercise.
Indeed many technical definitions are published dailyin the media. Both the USA and the EU have commissioned in-depth research into Cloud computing in an attempt to define it.
“Cloud is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources ( e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction” (NIST 2010)
“Cloud is an elastic execution environment of resources involving multiple stakeholders and providing a metered (sic: chargeable) service at multiple granularities for a specific level of quality of service” (The Future of Clouds, EU study, 2010)
On first reading the two definitions appear to mirror each other. However, there are omissions in both publications which weaken them being used as the definitive definition of Cloud computing. NIST refers to ‘minimal management effort’ the EU study does not mention this important point. Conversely, the EU study refers to ‘ a metered service’ which the NIST report fails to consider this
Therefore a more complete definition of Cloud computing could be:
“A model involving multiple stakeholders and enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction. The model provides a metered service and multiple granularities for a specified level of quality.”
Notwithstanding all of the above perhaps the clearest and most obvious definition is “Cloud computing is selling X as a Service.” X in this instance can be any or all of the following:
1. Infrastructure as a Service
2. Platform as a Service
3. Software as a Service
Taking each of the above in turn they will be defined and examples of the services available will be shown
Infrastructure as a Service (IaaS)
When the IaaS model of Cloud computing is used by a customer virtual compute and storage is made available by the service provider. The service provider will manage the physical resources and their hypervisors. Once the infrastructure is in place the customer can run their software stack and manage the content of their allocated virtual resources including the Guest OS. In principle, customers using IaaS should have overall control of their data.
Amazon EC2 is an example of IaaS
Platform as a Service (PaaS)
The PaaS model provides the environment and software platforms upon which Cloud customers can develop and host their own software application. Customers do not manage the software platforms provided by the service provider. However, they do need to manage their own software stack. Cloud providers expose their own APIs which are directly used by customer applications.
Google App Engine is an example of PaaS
Software as a Service (SaaS)
The most widespread use of Cloud for public consumers. The service provider supplies ready to consume software applications which address specific needs of the end user or business function. In the SaaS model the provider completely manages the software and the hosting environment. In certain circumstances customers might be required to manage their configurations within the supported software application.
Microsoft Office 365 is one example of SaaS.
In the next article, the components required to provide a Cloud computing service will be discussed.
A hypervisor is a minimised operating system that provides the minimum components required to enable it to virtualise hardware resources to guest operating systems
A typical hypervisor runs a Virtual Machine Manager (VMM)
A set of programs that work together to produce a result. Usually the operating system and its application, however the terminology is also used to cover web browsers and applications and smartphones and their apps.
Each Virtual Machine (VM) runs its own Operating System which is referred to as Guest OS. The Guest OS runs its VM specific applications
Application Programming Interface (API) are a set of subroutine definitions, protocols, and tools used to build applications (software). They allow communication between software components.