While these definitions can be somewhat loosely interpreted and there are not always distinct lines, as the cloud is a rapidly changing environment, I hope to be able to shed some light on the major components that makeup the “Cloud” (the word cloud is often in inverted commas, because of the many definitions of the paradigm).

So what is the Cloud? Generally I try to answer that question by saying, it’s a series of virtual machines, that share resources and can be accessed on-demand. Lets look at a few simple Cloud paradigms to help illustrate this:

A Service that provides software to be used on-demand.  As a business goes through it’s life cycles, application or other software, rather than being licensed, paid for, and installed in house; can be used on-demand, and paid for as required.  This allows smaller organizations to grow without major upfront investment, or any size organizations to easily adapt to seasonal or other business peaks and troughs. This Cloud product is referred to as: Software as a Service (SaaS)

Most organizations find that they have short term computing spikes, nightly batch cycles, seasonal business increases, etc. Building out long-term compute capacity for that short-term need is no longer required. Rather than build Compute/Network/Disk that sits idle most of the time, just to ensure capacity is in place for short-term needs, Cloud capacity can be allocated, as resource demand grows. Based upon policies such as; time schedules, processor or memory demand, instances can be spun up within the Cloud to handle capacity as required, and spun down or ‘parked’ when the spike in demand is over.  Often referred to as Cloud Bursting.  Similarly infrastructure resources can be re-allocated based upon demand. e.g. During the day capacity may be required for OLTP type applications, while overnight batch reporting may take the majority of the compute power at night.  Rather than have both systems always operational, even though at times they are idle, different virtual machines can be built, then be parked or active on the same underlying infrastructure depending on the current need.

The advent of low cost Cloud based storage has allowed organizations to store data off site in an environment where they don’t have to worry about procurement of additional disk resources as data needs increase. There is a simple paradigm of cost here, some of this storage is available immediately, some not so readily, based upon how much the organization is willing to allocate for the cost of the storage. It also allows for simple, low cost, off-site backups of both data and system. Backup, Data Storage, Redundancy.

Public Private & Hybrid Clouds:

Public Clouds:
A Public Cloud is one that is generally available to anyone.  A third party provides the “Cloud” platform, and anyone can subscribe to use the service; either on a pay-as-you-go (by the hour or minute) or a reserved (pre-paid) basis.
The names you hear on an almost daily basis, AWS (Amazon Web Services), Azure (Microsoft), Google, Softlayer (IBM), and a myriad of others offering more boutique services, such as Rackspace (Managed Services), Firehost (Security Hardened Hosting) are what we refer to as Public Cloud Providers. Generally the Public Cloud falls into two categories; Infrastructure as a Service (IaaS), or Software as a Service (SaaS) (see the definitions below). In either case the subscriber will only pay for using what they need in these environments, and generally has little say in the functionality – SaaS (although customization is often a feature), or the design of infrastructure components – IaaS, which usually comes in predefined chunks that can be used to build a system. An analogy is a prefabricated house; you can request as large or small a house as you need, the rooms, electrical and plumbing are predefined and specifically sized, but you can move the furniture around as long as it fits into that pre-defined space. Public Clouds are Virtualized, that means that all elements of a Public Cloud are shared resources; one large piece of hardware is split into smaller pieces, using software called a hypervisor and the compute, network and storage instances used share the underlying resources through the hypervisor. It is also possible to reserve specific resources (at a premium cost) within a Public Cloud.

Private Clouds:
A Private Cloud is wholly owned by an organization, usually virtualized, so the resources of the underlying infrastructure can be shared, but only within that organization. While a Private Cloud is usually hosted on-premise within an organization it can also be hosted by an external (Public Cloud) provider. A private cloud may use the same technology stack as a Public Cloud provider, (Azure, OpenStack etc.) or it may use a proprietary stack specific to the needs of the Organization.

Hybrid Clouds:
A Hybrid cloud is really the best of both worlds, an organization may decide to build a private cloud, and keep certain functions in-house, and close for many reasons; including security, operational procedures, regulatory compliance etc. but use the capability of a Public Cloud, for Bursting, Additional Compute Capacity, Data Storage, Redundancy etc. By ensuring both the Public and Private Clouds use the same technology stack, this interoperability becomes easy. Note: There are tools that allow cross Cloud interoperability so the stack compatibility is becoming less of a concern.

as a Service: IaaS PaaS SaaS DaaS XaaS

The Cloud is littered with acronyms and jargon, but they main cloud paradigm is that everything to do with cloud is available “as a service”. The XaaS – means Everything as a Service, and is used to cover those things not intrinsically spelt out by the other acronyms. Some of the lines are getting blurred, SaaS and PaaS along with IaaS and PaaS may share components, The new kids on the block are “Containers”.

IaaS: Infrastructure as a Service, is the underpinning of all Cloud offerings, the idea being that the Infrastructure is defined and a Cloud applications share that infrastructure, usually by means of a virtualized environment supported by a hypervisor, but also by virtual networking, storage and other paradigms. The idea is that one platform can support multiple components that can be implemented as required, using shared hardware resources. From a maintenance POV this becomes easier to manage, as the infrastructure components are obscured from the user, although in reality a good understanding of the virtualized space is required to get optimum performance from the Cloud instance(s).

PaaS: Platform as a Service, exactly what this is is open to some interpretation. Basically it’s a “Platform” that something can be built on, be it an application or a database, or some management features. The provider gives you something that they control, but you can use. I consider it to be the glue between IaaS and SaaS. PaaS can be a mix of Application, Database, Analytics, Scheduling, Workflow, Monitoring, Management, Configuration and Orchestration options. A Cloud environment can be built without using any PaaS, but in reality it would not make sense, and be somewhat difficult to build and manage anything but a small cloud implementation without some form of PaaS in the mix. The market has lots of different options for PaaS – some are very mature, some immature, some are very specific in terms of functionality and some are more broad. Many incorporate or encompass interfaces to a variety of other tools, particularly for deployment, monitoring, and policy based configuration. I think PaaS is a moving target and that is why I said it can be blurry to define.  One drawback of using a specific cloud providers PaaS options is that you generally become locked into that provider. But it does allow you to get functionality up and running much more quickly than building it yourself.

SaaS: Software as a Service is possible the easiest layer to define. It’s a software implementation for a specific application function, which the consumer does not own. The simplest SaaS implementations are Email or Office (Office365) applications, the other popular applications are ERP and CRM (Dynamics, Salesforce etc.). But SaaS can be much more specific and lots of new SaaS applications are springing up every week.

SaaS can further be divided into Multi and Single Tenant implementations. In a multi-tenant implementation , multiple organizations are using the same SaaS platform, the data and customizations may be shared with other tenants (although some multi-tenant instances do not share data), performance may suffer because of “noisy neighbor” syndrome (another tenant is using lots of resources), but because it it “shared” generally the cost is less. Single Tenant or dedicated SaaS instances are usually more costly and in that case the organization reserves the instance, while still paying for usage as a commodity.

DaaS: Desktop as a Service, abstracts the users desktop to a cloud based environment, the idea is the user can access their desktop from anywhere, and there is centralized control of the desktop. A lower cost workstation can be deployed, and management and maintenance of desktops becomes simplified.

XaaS: Cloud bases services continue to grow, more acronyms are bound to follow e.g. StaaS (Storage as a Service) DbaaS (Database as a Service), until then anything that doesn’t fall into one that hasn’t been defined like the above is XaaS Everything as a Service.