VPS vs IaaS vs Everything Else
Lately, we've been fielding a lot of questions about the differences between VPS, "Cloud Hosting", and Infrastructure as a Service (Iaas). Before we compare the three and give you the information you need to figure out whether the difference matters for your application, let's spend some time defining each type of offering, and describe what the typical experience might be in purchasing or using them.
Virtual Private Server (VPS)
VPS offerings are the oldest and simplest (to understand) type of cloud offering. When you sign up for a VPS service, you generally pick the size and type of server you need, and then receive the information you need to log into the virtual machine (VM) that the Service Provider creates for you. The type of access you have to the VM varies from one service provider to another -- some providers give you remote console access (usually via a browser plugin), while others limit your access to the server application's web GUI or SSH command-line access. Wikipedia even makes the following distinction based on the level of configurability: "A VPS which is dynamic (that is, it can be changed at runtime) is often referred to as a 'cloud server'."
The virtual hardware specs of the VM, and what operating system and applications are installed on it depend on the choice you made at the time you signed up for the service. Your virtual machine lives on a physical server in the SP's data center, and runs under one of several hypervisor platforms (usually KVM, Xen, or OpenVZ).
Here is an example of how you might describe the process of purchasing a VPS:
You decide that you need an Elastix PBX to handle your small office's phone calls, and you don't want to purchase a physical server for this. You find a VPS provider that sells "micro Elastix servers" for $25/month, so you sign up with them. Once your SP provisions the virtual machines, you receive the information you need to remote console into your new virtual private server, and you go on to configure Elastix with the settings you need to make your phones work. The virtual server is connected to the Internet, so you configure iptables or some other firewall software on it to protect it, and you handle operating system and application upgrades -- just like you would with a physical server.
A few months later, you decide you want a MySQL server and a web server. Now you purchase two more virtual servers from your VPS provider -- a "Medium Web Server" and a "Large MySQL Server" instance - at $50 and $100 respectively. Again, your provider creates two new VM's for you, and you log into each one and configure them to your liking. Each of these is also connected to the Internet, so you also configure iptables on each one. And since you want your MySQL and web servers to be able to talk to each other, you add rules into iptables to permit this.
One year later, business is great - so great that you've outgrown your "medium" web server, and need to beef up the CPU and RAM on it. You sign up for a "Large Web Server" with the provider, move all your configuration files over to it, and tell your provider to cancel the Medium Server that you were using up until now. This involves a little bit of downtime - you have to move files and change DNS entries to point to the new server's IP address, but it's still easier to manage than having a physical server sitting in the closet in the corner of your office.
First, let me explain why I keep putting the words "Cloud Hosting" in quotes: It's because all three of the approaches we're discussing here are, at their core, just different approaches to cloud hosting. The thing is, when people talk about VPS vs. Something, they usually don't have a good term for what that Something is -- and so they call it "Cloud Hosting". Up until recently, it would have been fine to just say "VPS vs. Everything Else", because that's what the discussion was really about - but we can't even do that anymore, because VMware™ went and introduced a platform that is nothing like Everything Else.... but before I get ahead of myself, let's finish talking about "Cloud Hosting". For the moment, let's just agree that we will call everything that isn't VPS or IaaS "Cloud Hosting" so we can talk about it for a minute.
When people talk about "cloud hosting", they are usually talking about services like Amazon™ EC2. So how are services like EC2 different from VPS? Well, for one thing, the way you typically pay for a cloud service is similar to how you pay for electricity or water - "utility billing". That is to say, you pay for what you use. So if you fire up a VM for a few hours, and then power it off, you are just billed for CPU and RAM for the time during which the VM was powered on. Secondly, you can power off and on the VM when you want - that's not typically the case with VPS offerings, where the VM stays on all the time. And third, you can clone the VM to make a second one - or to leave the clone powered off as a backup.
Despite the differences described above, the way you actually use a "Cloud Hosting" service is very similar to VPS services. Using the scenario we described in the VPS section, you would log into your Cloud Hosting service provider, and fire up three VMs. Then you would remote console into each one, install the software you want, configure security for each one, and begin using them. One advantage over VPS, however, is that you might have the ability to increase the resources of a VM without having to build a new one and destroy the old one. Specifically, for the web server example above, you could power off the virtual machine, edit the VM settings to increase the RAM and CPU, and then power it back on.
Infrastructure as a Service (IaaS)
IaaS takes the concept of virtualizing servers (a concept that is realized with both the VPS and "Cloud Hosting" approaches), and extends it to virtualizing an entire data center. What, exactly, does that mean? Well, for one thing, in the example we've been using so far, you wouldn't purchase three individual VM instances. You would purchase the amount of compute, memory, storage, and network resources that you need -- as an aggregate. Specifically, you might purchase the following components from your IaaS provider:
- 2GHz of CPU
- 16GB of RAM
- 200GB of persistent storage
- 3 Public IP Addresses
Then you would use those resources to create the virtual machines that you want - you might create one big VM, or four tiny VMs - or something in between. How you use or split up the resources is up to you. In addition, you might network the VMs together using one, two or more private subnets, and then protect them all with one virtual edge gateway that seals off your entire virtual data center. If you need to scale up or down, adding and removing resources is easy - just contact the service provider and purchase or cancel the resources you need.
By now, you've no doubt realized that the way you purchase and use IaaS is very similar to how you use resources in a physical data center. And once you've allocated resources and built VMs in a Virtual Data Center, you interact with them just like you would with a "Cloud Hosting" platform - you remote console to them, power them off and on, and clone them at will. There are even things you can do with a Virtual Data Center that aren't possible in the physical world - depending on your VM's guest operating system, you can add RAM and CPU to a VM without powering it off. Referencing the example above, you're now increasing web server capacity with a few clicks - and zero downtime.
VMware's IaaS platform, vCloud®, brings even more functionality to the table -- you can do things like package up multiple VMs into one "vApp", and then power off, clone, download, and move the entire vApp. And vApps are portable across VMware based platforms. So, for example, you can build a vApp on VMware Workstation or Fusion on your Windows or Mac desktop -- or your private cloud infrastructure built on vSphere, and then upload it to or download it from a vCloud based service provider. And, just as interesting, you can move a vApp from one VMware based service provider to another. These are the type of benefits that put people focused on high availability and disaster recovery in a good mood.
Summary - VPS vs. IaaS vs. Everything Else
The general conclusion has always been that "Everything Else" was more flexible and scalable than VPS. And most non-VPS providers use that argument to justify pricing that is typically 20% (or more) above VPS pricing. VoicePulse's implementation of VMware's vCloud platform changes all of that - the functionality is greater than any other virtualization technology on the market, and we're able to bring it to customers at prices that equal to or lower than many VPS offerings. When you factor in the portability, industry leadership of VMware, and lower learning curve for your staff, the total cost of ownership is often lower than than any other option.