I’ve had a personal website of one description or another for a long time now. For much of that time, the site was hosted by renting space on someone else’s large server – so called “shared hosting.”
The theoretical problem with this model was that the server’s resources were shared between all its users, and if one user chewed through a whole lot of them then that left fewer available for everyone else. I’m not sure I ever actually experienced this (although I’m sure it really was an issue for web hosting companies to contend with), but the problem I did come across was that to protect against this kind of thing hosts often put policies and configuration options in place that were very restrictive. Related to this is the fact that server configuration options apply to everyone with space on that server, and they’re not for individual users to control. A problem if you want to do anything that deviates even slightly from the common-case.
The alternative to shared webhosting would have been to rent an entire server. This was – and still is – an expensive undertaking. It also was – and still is – far more power than I need in order to host my website. Sure, it’s possible to build a lower-powered (cheaper) server, but the act and cost of putting it in a datacentre to open it up to wider world mean that it’s probably not a worthwhile exercise to do all that with low-cost hardware.
What seems to me like not very long ago, virtualization technology took off and created a market for virtual private servers (VPSs). This allowed server owners to divide their hardware up between users, but in contrast to shared hosting each user gets something that’s functionally indistinguishable from a real hardware computer. They can configure it however they wish, and it comes with a guaranteed chunk of resources: heavy usage of one of the virtual machines hosted on the server does not negatively impact the performance of any of the others.
This is the model under which my website is currently hosted. I’ve chosen a low-powered VPS because that’s all I need, but recently as my site has started to see more traffic it occasionally sees spikes in incoming traffic that tax its limited memory and processing resources. I use CloudFlare as a service to balance this out, mitigate threats, easily implement end-user caching policies and generally improve speeds (particularly for those users that a geographically far away from the server), but once my server resources are maxed there’s nothing I can do about it: my host has divided the server up into VPS’s of a predefined size, and doesn’t allow me to grow or shrink the server along with my needs.
The new paradigm is an evolution of this. Instead of dividing each bare-metal server up into predefined VPS chunks, each server is a pool of resources within which VPSs of various sizes are automatically provisioned according to customer requirements. Behind the scenes, technology has grown to make this easier, especially when you scale the story up to more than one bare-metal server. A pool of physical servers can also pool resources. If a VPS hosted on one physical server needs to grow beyond the remaining available resources of its host, it can be invisibly moved to another host while it’s still running and then its resources expanded.
This new paradigm is the one I plan to move to. Led by the likes of Amazon and Google and now followed in the marketplace by lower-cost providers like DigitalOcean and Vultr (likely to be my provider of choice), servers have really become commodity items that can be created and destroyed at will. You used to rent servers/hosting by the month or year, now it’s by the minute or hour. It’s common for hosting companies to provide an API that lets you automate the processes involved – if my server detects that it’s seeing a lot of traffic and is running low on resources it could – with the right script implemented – autonomously decide to grow itself, or maybe spin up a sibling to carry half the load. When things settle down it can shrink itself back down or destroy any additional servers it created.
What a wonderful world we live in!