This is a question that we get asked quite frequently, in some for or other – so I thought I should address this in a short post – which ended up being quite lengthy.
The reality is that today’s cloud hosting – be it AWS, Google Cloud or Azure Cloud which we at HyperOps offer – has many amazing qualities but also certain weaknesses. Contrary to what most pure cloud providers would have you believe, it is not an optimal solution for everyone.
When used for hosting websites or web applications with pretty stable and predictable user traffic with no major fluctuations, cloud infrastructure will almost always be more expensive than dedicated servers-based infrastructure – as in a nutshell, cloud is basically the same dedicated servers with a rather expensive virtualization layer slapped on top, and an assortment of additional services.
It is certainly true that using cloud reduces the headaches created by, e.g., failing hardware components that would threaten to take a traditional VDS or physical machine-based hosting setup offline. However the virtualization layer used to distribute your hosting workloads over many nodes comprising a cloud is itself a complex piece of software onto which your cloud setup depends – and software complexity inevitably breeds instability – which, while being a problem of a different nature, may also result in outages and downtime.
We are especially skeptical about cloud infrastructures offered by small and medium sized hosting providers – and by saying ‘small and medium sized’ we essentially mean ‘any public cloud hosting infrastructure provider that is not Microsoft, Amazon, Google or Rackspace’. In its current stage of development, high-end virtualization software used for powering cloud infrastructures is both expensive and quite difficult to setup and run well. There aren’t that many hosting companies in the world who have sufficient amount of in-house technical expertise to do it really well. The big guys can afford to have it and are able to run it really well – and that is the reason why at HyperOps we choose to offer our customers Microsoft’s excellent fully featured Azure Cloud rather than any clouds run by regional or local cloud infrastructure providers. This is also the reason why we do not offer a ‘HyperOps Cloud’ – we are too small to run one; Microsoft or Amazon will always be able to do it better than any hosting provider of our size.
For customers who have a real need to run in the cloud – e.g. for those with online applications or websites experiencing occasional huge usage spikes, or those who running resource-hungry workloads for a few minutes or a couple of hours every day – we normally propose to use the cloud. For those running platforms or sites with predictable and stable loads we usually offer other alternatives – and ensure high availability through other means.
It is also important to remember that cloud infrastructures also tend to have scheduled maintenance periods, even if rather infrequently. Big cloud providers – and again we are having in mind players like Microsoft, Amazon or Google here – generally have their own failover systems in place that enable customers to move their workloads from one datacenter to another during such planned cloud downtimes. However this may not always the case even with quite large hosting players. Thus for our cloud hosting customers with critical applications that really need to stay up around the clock, we usually propose to have capabilities to failover to another cloud provider built in into their architecture – which we are more than happy to help with.