At first glance, it could seem that virtual private servers (VPS) and cloud hosting are the same thing. So, what is the difference?
The VPS origin story
Slicing larger machines into virtual environments goes back to the IBM mainframes of the 1960s. However, the virtual private servers offered by generalist web hosting firms today started to appear in the mid-2000s.
Those shared web hosting providers offered an important, if not always reliable, way for millions to have an online presence. For anyone wanting something beyond PHP/MySQL, or that didn’t go offline every few days, the next choice up was to rent a dedicated server. This usually meant a longer term commitment and a large monthly outlay.
Virtual private servers were a way to bridge the gap between shared hosting and expensive dedicated servers. Taking advantage of User Mode Linux and Xen, these VPS offerings were identical to dedicated servers except they ran as a virtualised environment rather than directly on the bare metal.
So, what is the cloud?
A lot of jokes have been told about just how vague a term “cloud” can be.
And here’s where the confusion arises: not every internet connected service that’s hosted on someone else’s computer can be called cloud. Virtual private servers are not cloud, no matter what many shared-hosting providers might claim.
Let’s recap the attributes required for something to be called cloud:
- Elasticity: if you can’t resize it, it ain’t cloud.
- Utility: you pay for what you use and you use only what you need.
- Disposability: you spin up and spin down resources as you need.
- Automation: if you can’t script it, then it’s not flexible enough to be cloud.
- Abstraction: the machine(s) underlying the resource you’re using should never be your concern.
So, while a VPS is a fixed machine that has the same limitations and needs as a bare metal machine, a cloud VM is an elastic disposable resource that lives long enough to solve a particular need. In practice, that VM might stay online for years but it can scale or go away exactly when you decide.
VPS is self-contained, cloud VMs are part of a service
So, let’s say you have your VPS up and running. Now every service is something extra that you need to manage.
DNS? Install BIND.
Firewalling? Better get familiar with IPTables.
In a cloud environment, your VM is a computing resource that is part of a larger picture. Typically, a cloud provider will offer you a managed DNS service, managed firewalling and so on. With a cloud VM, you can throw it away when its job is done rather than worrying that you’ll lose some essential service such as your DNS.
Abstraction is useful in that you shouldn’t need to care about the hardware underlying your VM. However, while VPSs are usually hosted in a single data centre, cloud hosting is geared towards redundancy and availability.
So a cloud provider will offer you a number of ways to separate your concerns, from ensuring certain VMs are on separate hypervisors up to full geographic separation.
Automation is at the heart of the cloud promise. Whereas a VPS is a fixed resource, cloud VMs are scriptable through standard APIs.
Through a cloud API, you can automatically initiate or kill a cloud instance, scale as needed, and so on. Again, it’s all about the idea that the VMs themselves are less important than the overall service they’re powering.
Why would it matter?
Why should you care about the difference? Utimately, it’s about flexibility and value.
Being able to scale up or down at a moment’s notice can be crucial when spikes in demand can come from unlikely sources. Even predictable peaks, such as the New Year sales for a retailer, are best served by the cloud approach.
Cloud hosting, rather than VPS, allows you to save money and time, while giving you more flexibility to create innovative services that meet your customers' needs.