Cloud

What is the cloud?

“Cloud” refers to computing as a utility, rather than a product.  Also known as “elastic computing”, cloud computing resources can be purchased and consumed as needed (like electricity).  As a result, “cloud” becomes an abstraction for the underlying hardware needed to service the request.

Cloud hosting

What types of cloud are available?

Cloud is a description that gets applied to a lot products & services (everything from Gmail to virtual servers).  However, these offerings generally break down into 3 categories:

  1. Software as a Service (SaaS) - Managed entirely by the vendor.  Examples include SquareSpace, WordPress.com, Blogger.
  2. Platform as a Service (PaaS) - Vendor managed services designed to be consumed by applications.  Examples include Amazon S3 or Azure Storage.
  3. Infrastructure as a Service (IaaS) - Vendor managed hardware that enables customers to create virtual servers.  Examples include Amazon EC2 or Rackspace Cloud Servers.

The following diagram demonstrates the level of control offered by each of these 3 options.

Cloud Options

The 4th option (Packaged Software) represents a non-cloud scenario where all setup is managed manually.  

What are the advantages of cloud infrastructure?

Easier to react to real-world demand

Cloud computing is purchased as needed.  Consequently, it becomes relatively easy to create new resources to deal with a spike in demand and then disable these resources when traffic returns to normal.

Increased reliability

In a cloud environment, responsibility for the underlying hardware and networking belongs to the cloud provider.  If a web server (or 20 web servers) fail then cloud providers can utilize their redundant capacity to quickly recover.

Cheaper & more energy efficient 

Traditional hosting requires the organization to maintain enough equipment to service maximum capacity.  In addition, many organizations maintain backup hardware to handle hardware failures.  As result, IT departments maintain infrastructure that sits idle most of the time.  By utilizing cloud computing these extra resources can be created and consumed as needed.  This means cost is tied to actual usage, rather than potential usage.

Faster start-up

The underlying hardware & networking is managed as part of the cloud service.  Consequently, this is a complexity that new start-up’s do not need to manage manually when using cloud infrastructure.  This potentially reduces the time-to-market and positions the start-up to rapidly react to future demand.

What are the disadvantages of cloud infrastructure?

A web site does not magically inherit cloud benefits by being on cloud infrastructure.  Rather it needs to be engineered to utilize these benefits.  Depending on the level of scalability required this can present substantial challenges.

Cloud storage has rules & limitations

Each cloud provider has slightly different storage options and limitations.  For example, SQL Azure databases have a hard limit of 50 GB.  This works fine for many projects.  However, when the web site needs to scale dramatically, then these limitations can present substantial challenges.

Web Application performance might suffer

A lot of CMS’s rely heavily on a database to store and retrieve content.  As a result, the web server is constantly talking to the database.  For a single page load there might be dozens of requests to the database.  Any network latency that exists between these servers is going to have an impact on the web site’s performance.  In a cloud environment it’s difficult to optimize the connectivity of these 2 servers.  As a result, it’s important that the web servers (and the CMS) optimize the number of database requests needed to produce a page.  This can be done through database optimizations, caching and support for faster (more scalable) cloud storage options.

Vendor lock-in

Many of the PaaS cloud options involve proprietary storage technologies.  As a result, supporting one cloud platform service (for example, Amazon S3) creates an underlying dependence on Amazon services.  In this scenario, switching cloud providers would involve substantial cost through re-engineering the software solution.  In fact, even exporting the existing data could result in substantial cost.

How does a CMS create cloud support?

It’s relatively easy for a CMS to claim “cloud support“.

For example, in an Infrastructure as a Service (IaaS) environment, a virtual server running Linux or Windows can be created and any CMS installed on the server.  Because the cloud server is emulating a regular server, the CMS isn’t required to do anything differently.

However, this scenario does not scale.  When the web site’s requirements exceed the limits of a single virtual server then the CMS needs to support a multi-server deployment to introduce a 2nd cloud server.  As additional computing resources are required these complexities keep multiplying.

Consequently, CMS’s support “cloud” (and more specifically scaling) in varying degrees.  Below are a few features that suggest the CMS has given specific thought to scaling in a cloud environment:

  • Support for cloud storage – (S3, Azure Storage, RDS, SQL Azure)
  • Support for multiple web server instances
  • Tools for deploying / scaling
  • Distributed caching
  • Synchronization

Where can I find more information?