Thursday, December 22, 2016

Virtual Private Servers (VPS) and Cloud hosting are now viable

For many, many years, I was a massive fan of dedicated web hosting. I was VERY vocal about how you couldn't run a legitimate, professional business without using dedicated web hosting. And time and time again, I was proven right as people on shared web hosting came out of the woodwork in various places who had bet their business on shared hosting and lost - and sometimes they lost EVERYTHING including their business and all their customers!

Shared web hosting is still the bottom of the barrel, scummy/scammy money grab that it has always been and no respectable business should be caught dead running their web infrastructure on it. Period. That hasn't changed.

However, I have been watching a couple of new stars grow from infancy into its own over the past 8 years: Virtual Private Servers, aka VPS, and its newer, shinier cousin Cloud Hosting.

Dedicated web hosting is expensive. It has always been because you get a piece of hardware, a network drop, electricity, a transfer limit, a SLA (e.g. 99.9% uptime guaranteed), and a contract. On shared hosting, you can't do whatever you want and will be given the boot if you try to do much of anything with it. However, in the case of dedicated hosting, the CPU, RAM, and hard drive are yours to do whatever you want with it. Entry level dedicated servers start around $60/month for a 1 to 2 year contract period and rapidly go up to hundreds of dollars per month for more beefy hardware. But you can run as many websites on a single piece of hardware that you are comfortable with running on that one server. If you are looking for dedicated hosting, I still recommend 1&1 Dedicated Hosting.

Virtual Private Servers (VPS) have generally been a cheaper option, but with the serious caveat that you can't do much with them. It's a blend between shared hosting and dedicated hosting. You get a mostly isolated OS instance (inside a virtual machine) but you share the same physical hardware with other virtual machines. Most VPS providers charge about half the cost of a dedicated server with a fraction of the CPU and RAM. The OS that runs on a VPS shares I/O resources with other virtual machines on the same host. That is still a problem but is being worked on. CPU cores, RAM, and network bandwidth are isolated these days but I/O requests to physical media (i.e. hard drives/SSD) are not. This means that one virtual machine can still potentially starve other machines on the same host. It's a problem still being worked on. Many VPS providers have also moved to using SSD instead of hard drives, which helps with reducing I/O overhead time. For consumers, most VPS providers simply aren't cost effective - the amount of hardware (CPU, RAM, storage), or lack thereof, is usually the bottleneck - and so most web sites won't run on most VPS infrastructure very well. Some early adopter VPS providers started offering expandable VPS solutions after a while, which are the precursors to Cloud hosting options.

Cloud hosting is the newer shinier kid on the block. When it first came out, it was generally more expensive than dedicated servers. I kept an eye on it but pretty much wrote it off as a toy that would take years to mature. The idea is simple - separate hardware interests so that data can be floated around and attached and detached at will and massively replicate data around the globe so that it is readily accessible at the closest point to the user. In addition, additional hardware resources can be attached and detached at will and/or migrated as usage rises and falls. Implementation of that is difficult to achieve and the tools to build and maintain that sort of infrastructure at first didn't really exist. The tools eventually were developed and have matured over many years (as I predicted) and Cloud hosting has also subsequently matured. It is still more expensive to deploy than a VPS and can still be more expensive than dedicated hosting.

So, why write this post? As my dedicated hosting contract reached its end of life this year, I started looking around at my options. I was quite aware of Digital Ocean, which has an amazing programmable API for spinning up and down instances (Droplets) and doing all sorts of crazy things with virtual machines. After a lot of research and personal fiddling around with their API, I have more or less decided that Digital Ocean is only good for temporary, toy instances where you've got an idea you want to try out before deploying it for real. The general consensus I've seen in the larger community is that people shouldn't try running a real website on Digital Ocean or Amazon AWS. Amazon AWS, while similar, is also more expensive than Digital Ocean and both AWS' cost calculators and Amazon's horrible, convoluted Console, API, and SDK will drive you up the wall.

Then, after a lot more searching, I finally discovered OVH VPS and OVH Cloud Hosting. For ~$13.50/month, a fraction of the cost to get the same setup elsewhere in VPS land and beating some low-end dedicated hosting hardware-wise, OVH provides a fully functional 2 core VPS with 8GB RAM and enough monthly transfer for most businesses. Their offerings here, hands-down, absolutely crush Digital Ocean - the importance of having enough RAM overhead to actually do things can't be overemphasized! In addition, for half the cost of a low-end dedicated server, OVH's lowest end Cloud hosting option completely blows most low-end dedicated hosting out of the water in terms of hardware specs and scalability readiness. I honestly don't know how they are managing to do that and still turn a profit - based on some recent-ish server blades I've seen pop up, I have a few ideas but, even then, margins per blade are thin. The ONLY downsides to using OVH is that they don't have automatic billing/renewal capabilities for their VPS and Cloud hosting options and I also had to come up with an alternative to my previous firewall solution. The Canadian company has been around for so long that their payment system still uses CGI scripts to process payments (there's an early 2000's throwback for you). OVH should scrap their current payment system and use Stripe for a flexible PCI compliant payment solution, which also happens to be what Digital Ocean currently uses.

In short, I stopped using 1&1 at the end of my contract period and have been quietly using OVH for many months now. My costs are significantly reduced but the hardware isn't as robust as before (to be expected - I went from an 8 core dedicated to a 2 core shared system) and not having automatic billing is a tad irritating. OVH makes it easy to renew, but no one should have to do manual renewals of a standard service for a wide variety of reasons - the least of which being that everyone else in the industry offers automatic renewals and they are the weird ones here. 1&1 has a configurable Cisco firewall for their dedicated server products that worked quite well - one of the reasons I stuck with them for so long. So I also now deploy and use good iptables rules and the Web Knocker Firewall Service for a powerful firewall combo that is basically fire-and-forget and superior to most firewall setups.

No comments:

Post a Comment