Tuesday, 15 January 2013

Application Hosting Types Demystified

As a technology consultant, there are certain conversations which seem to always get confused. One of these conversations is around hosting. There is a lot of variation in understanding and agreement of what types of hosting there are and what they are called. I've become quite confused by this myself.

This post is my attempt at providing a crystal clear definition of the types of hosting and what they mean to you (a user of hosting services) and the hosting provider.

I've broken down hosting into these the following categories: Onsite Servers, Offsite Servers, Offsite Virtualised Servers and Cloud Services.

Below is a matrix which lists these types of hosting and what aspects you have to look after (marked with ‘C’) and what parts the hosting provider looks after (marked with ‘H’).

Onsite Server Hosting

Onsite Server Hosting means hosting everything on your company’s premises. Everything includes hardware, networking, power, servers, operating system and your application.

Onsite hosted solutions range from servers running under a developers desk (I think we have all been guilty of this crime) to sophisticated data centres built on premise with redundant power, security control, big pipes to the internet, proper cooling systems and racks to house the servers.

Offsite Server Hosting

Offsite Server Hosting means delegating hosting responsibilities to a third party hosting provider. These are typically data centre operators like RackSpace or GoDaddy.

Hosting providers run data centres which include facilities like the building, security, power, racks, networking and management services. There are several options Offsite hosting providers provide including: dedicated, co-located and shared options.

Co-located Server Hosting

With co-located server hosting, you rent space in a server rack. You need to provide the server and may even end up installing it yourself. You look after the server, the operating system and the application, and the hosting provider looks after everything else.

Dedicated Hosting

With Dedicated Server hosting, you rent one or more servers from the Hosting Provider. In this model, you look after the Operating System and the Application, the hosting provider looks after everything else.

Shared Hosting

With Shared Hosting, you are given access to a server with an operating system and application services already installed. An example of this is hosting your site on a server running Windows and Internet Information Server or Linux and Apache Web Server. Here you are given access to your own Web Site instance which you can then deploy your code onto. Shared hosting can include all application services such as database services.

Shared hosting is similar to Cloud Platform as Service hosting in the sense that all you have to do is look after your code. It is very different, however, in terms of the level of control you have over the resources available to you.

Offsite Virtualised Server Hosting

Offsite Server Virtualised Server Hosting also means delegating hosting responsibilities to a third party hosting provider. The key difference is in this hosting model is that your operating system and applications don’t run on physical servers, but rather on Virtual Machines. In this hosting model you never look after physical hardware, the hosting provider looks after that too.

There are two main types of virtualised hosting: Virtualised and Private Cloud. The key difference between Virtualised and Private Cloud hosting is how VMs are provisioned and by whom.

Virtualised Hosting

With standard Virtualised hosting, if a developer or software provider needs a new VM provisioned they make a request to a VM Administrator who normally works in an IT capacity. There is a formal process of approval and the VM gets provisioned and the requestor is given access to it to do with what they so desire. The VM Administrator generally uses software called a Hypervisor to manage the provisioning of VMs.

Private Cloud Hosting

Private cloud hosting is the same as Virtualised hosting where VMs are provisioned to software providers. The difference is that Private Cloud hosting is a self service model where a set number of resources are allocated to the VM User and they have the ability to provision VMs themselves.

Think of Private Cloud hosting as self service virtualised hosting.

Public Cloud Service Hosting

Cloud service hosting is the next evolution of Private Cloud Hosting. Amazon pioneered Cloud Service hosting and other tech giants like Microsoft and Google (and existing Hosting Providers like Rackspace) have their own offering. Microsoft’s Azure being the biggest competitor to Amazon’s AWS. There are two main offering with Cloud Service’s: Infrastructure as a Service and Platform as a Service.

Infrastructure as a Service

Infrastructure as a Service (or IAAS) is the next of kin to Private Cloud Hosting. It is different from Private Clouds in the following ways:

  • It is a service available to the public (duh!)
  • The infrastructure is shared across the entire Public Cloud Service. 
  • The management services have evolved to provide faster elasticity (scaling up, out and in) and simplified the provisioning process. 
  • The payment model is utility based i.e. pay for what you use. 

Platform as a Service

The next level up from IIAS is Platform as a service, or PAAS. Platform as a service is a slightly murkier concept as it can mean many things ranging from any component you typically plug into your application including search, database, messaging, email, geo-location, address lookup etc.

PAAS can sit lower down the stack level like Azure’s Web and Worker Roles where you build an application on an application template and deploy that onto a pre-configured instance of IIS or Windows Server.

Software as a service

Software as a Service (SaaS) is the end of the rainbow for hosting models where you don’t really have to look after anything. You become a user.

Software as Service means running fully fledged applications in the cloud, not aspects of an application developers can plug their code into. The most famous example of Software as a Service is Sales Force who revolutionised the traditional ‘On Premise’ software where model where software is installed on PCs and Servers that the customer owns, to a multi-tenant (all application infrastructure is shared to other customers) Hosted Service option that requires no on premise installation, maintenance or management.

I think it is useful to have a very clear understanding of what types of hosting there are and what they mean to software providers and customers. A very useful read, which help clarify some concepts for me, is David Chappel’s white papers on hosting located here.