So you re looking for a platform for your latest brilliant web application. You ve slaved away for months on a new application that addresses the needs of your target market. But now you re faced with countless hosting options, from traditional, shared-space web hosts to hands-free virtual servers. You don t want to host it on a server you put together yourself at your home (mostly because you re not sure your ISP s bandwidth could handle it), so how do you choose?
Shared-space web hosts won t work as well for a resource-intensive application, as you re generally sharing space and computing power with a large handful of other websites at the same time. You ve narrowed it down to a virtual private server like Linode or Rackspace, or a cloud application platform like Heroku or Amazon Web Services. So how do these two types of services stack up?
The primary difference between a VPS and a cloud application platform is server control. If you can gain access to the server via the command line and SSH, set up your server and change configurations, you re using a VPS. If the server setup is handled for you and you cannot change default properties and settings of the server, you re probably using a platform-as-a-service cloud application product. There are pros and cons to each service, so let s look at each of them.
Virtual Private Server (VPS)
A Virtual Private Server is a virtualized server machine. It allocates hardware resources to a virtual machine that you can configure just as you would a normal, physical server. VPS providers may have several VPS instances running off the same physical machine, but once your resources are allotted, they re yours; you ll have access to that machine and those resources as long as you re using the service.
Pros: You have total control over your server environment, so you can use any language and framework imaginable. You can also modify specific settings on the server to fit your exact needs without using a workaround.
Cons: Every aspect of server setup is left to you, with no prior configuration; you ll need to be experienced in server administration to handle the setup. It also means you ll be in charge of maintenance, scaling, replication, backups and so on.
Verdict: If you know how to set up your own server, you ll like the flexibility and freedom that comes with a VPS.
Cloud Application Platform
A cloud application platform takes server administration out of your hands, setting up all necessary service aspects on its own. You don t have access directly to the underlying server, which may change at any time when you redeploy, spin up a new instance, add a new worker, or almost anything else. This fluid approach makes it easy to scale quickly, but it also means a lack of permanence for static files and such, as the server is generally dumped every time your app moves from one instance to another.
Pros: All server administration is done by the platform, so you only have to deploy code to be up and running. Software also handles resource allocation, so you can create new instances of your application in an instant, making scalability nearly effortless.
Cons: You re forced to use their platform, so you won t have the freedom to use specific technologies if they aren t supported by the PaaS. There s also generally no local storage unless specified, meaning you ll need to use another service (or one of their service add-ons) to store static files like images.
Verdict: If you re inexperienced with server administration, or you just need instantaneous scaling capabilities, you ll enjoy a cloud application platform.
Generally, for more fine-grained control and freedom to do as you please, use a virtual private server. If you want scalability, or you just don t want to worry about managing a server environment, a cloud application platform will serve you well.