Grasping the Cloud

With everyone jumping on a cloud-based bandwagon, many SaaS offerings seem only to relate to a true cloud offering in the mind of the marketing department. Just because an application has a web interface or is hosted remotely doesn’t make it a cloud application. While the provision of remote hosting of application software and data storage is a feature of cloud computing it is not its only features. So what is cloud…?

Fortunately we have some definitions to work with and some standards being promoted.

The Wikipedia definition is as follows (abridged):

“Cloud computing provides computation, software, data access, and storage services that do not require end-user knowledge of the physical location and configuration of the system that delivers the services. Cloud computing describes a new supplement, consumption, and delivery model for IT services based on Internet protocols, and it typically involves provisioning of dynamically scalable and often virtualized resources. This frequently takes the form of web-based tools or applications that users can access and use through a web browser as if they were programs installed locally on their own computers.” NIST Definition of Cloud Computing

On January 11th, 2011, NIST released their new Special Publication (SP) 800-145, Draft, regarding the definition of cloud computing.  NIST’s definition is as follows:

“Cloud computing 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.”

The NIST definition of cloud computing is composed of five essential characteristics, three service models, and four deployment models. I’ve included NIST’s essential characteristics below with additional explanations and included two of the three service models.

##Essential Characteristics

###On-demand self-service. A consumer can unilaterally provision computing capabilities, such as server time and network storage, as needed automatically without requiring human interaction with each service’s provider.

Computing capabilities can be provisioned by the end user without any help from the support team of the service provider. Most of the changes made to a system should be achieved by simple configuration changes as opposed to code customization.

###Broad network access. Capabilities are available over the network and accessed through standard mechanisms that promote use by heterogeneous thin or thick client platforms (e.g., mobile phones, laptops, and PDAs). To commence using a cloud service the consumer should not require any installation, extra hardware or software license specific to the service. Accessibility is the key where no matter where you are located you can access your application from any web enabled device with a browser.

###Resource pooling. The provider’s computing resources are pooled to serve multiple consumers using a multi-tenant model, with different physical and virtual resources dynamically assigned and reassigned according to consumer demand. There is a sense of location independence in that the customer generally has no control or knowledge over the exact location of the provided resources but may be able to specify location at a higher level of abstraction (e.g., country, state, or datacenter). Examples of resources include storage, processing, memory, network bandwidth, and virtual machines.

Multi-tenancy refers to the ability of software to be offered to multiple user entities (tenants) in a way so that each tenant operates as logically isolated, while, in fact, using physically shared resources. A tenant can be an organization co-using an application with other tenants. It can also be an application co-using underlying resources with other applications.

Multi-tenancy eliminates many of the problems created by the traditional software licensing and upgrade model and ensures that every customer is on the same version of the software.

###Rapid elasticity. Capabilities can be rapidly and elastically provisioned, in some cases automatically, to quickly scale out, and rapidly released to quickly scale in. To the consumer, the capabilities available for provisioning often appear to be unlimited and can be purchased in any quantity at any time.

Any cloud service must size up or size down (i.e. scale capacity up or down) based on application’s demand and the user’s base. In simple terms, Scalability is the ability to automatically grow or shrink whereas Elasticity is how instantly an application can add or remove resources. An application is scalable by virtue of its architecture whereas Elasticity is implicitly achieved by deploying on a cloud infrastructure.

###Measured Service. Cloud systems automatically control and optimize resource use by leveraging a metering capability1 at some level of abstraction appropriate to the type of service (e.g.,storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported, providing transparency for both the provider and consumer of the utilized service.

Cloud services are measured in a way similar to electricity or mobile phone usage. Also, apart from measuring and monitoring, the resource usage can be controlled as well. The tariff plans are solely based on the amount of the service used by the consumers, which may be measured in terms of hours, data transfers or other use-based attributes delivered.

##Service Models

The NIST described service models that apply to education would be as follows (pdf):

##Cloud Software as a Service (SaaS) The capability provided to the consumer is to use the provider’s applications running on a cloud infrastructure. The applications are accessible from various client devices through a thin client interface such as a web browser (e.g., web-based email). The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, storage, or even individual application capabilities, with the possible exception of limited user-specific application configuration settings.

In an education environment if we provide a SaaS Learning Management System that any individual or organisation can go to the same URL sign up for the service and pay per user and roll it out across their organisation this would be an example of SaaS.

##Cloud Platform as a Service (PaaS)
The capability provided to the consumer is to deploy onto the cloud infrastructure consumer-created or acquired applications created using programming languages and tools supported by the provider. The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, or storage, but has control over the deployed applications and possibly application hosting environment configurations.

Google apps and Microsoft Azure are examples of platforms and services which allow you to develop new applications without worrying about the underlying environment.

##Infrastructure as a Service (IaaS)
The capability provided to the consumer is to provision processing, storage, networks, and other fundamental computing resources where the consumer is able to deploy and run arbitrary software, which can include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure but has control over operating systems, storage, and deployed applications; and possibly limited control of select networking components (e.g., host firewalls).</blockquote> IaaS is the easiest category to define as that is where we currently host our LMS and leverage a global CDN infrastructure to deliver our content. As we have moved our IT infrastructure to the cloud, we stop having to worry about managing the hardware and can have a scalable resilient system without the capital outlay.