Comparing a platform-as-a-service (PaaS) to traditional hosting like VPS/shared hosting (e.g. DreamHost, Host Gator, GoDaddy) or infrastructure-as-a-service hosting (Iaas) (e.g. Amazon Web Services, Linode, CenturyLink Cloud is like comparing apples and oranges. One must look beyond hardware and price to get a true cost/value when picking a hosting provider.
Shopping for traditional hosting is too much like shopping for breakfast cereal: many mediocre options, little differentiation, annoyances for up-sell.
Traditional hosting… (aka “do it yourself”)
With traditional hosting developers have many responsibilities before they can even touch a line of code. Lets look at some of these responsibilities…
- Set up the application server (e.g. Apache, Nginx, etc.)
- Set up MySQL database
- Setting up the run-time platform like PHP, Ruby, etc
- Something isn’t working.
- Diagnose, re-configure/re-setup, try again.
- Dependencies… right, have to setup those up too.
- Setup FTP to deploy your code.
- Setup security and firewall.
- It worked on localhost, why isn’t it working now!!!
As you can see, before you get to the code, you’ll have to spend hours getting your production environment in a state which is just barely good enough to host your application. If you want your application to be reliable, scalable, and resilient against various failures, you’ll have to deal with additional issues like setting up monitoring, alerting, load balancers, replication of application across multiple servers, deployment scripts, etc. None of these are trivial.
Developers write code, not manage servers; why should they spend all this time managing servers?!
As a developer your core competency is writing code, not managing servers. Enter the world of PaaS. With PaaS you get a whole lot more “out-of-the-box” than you could from a traditional hosting provider; here are just a few…
- HTTP Caching Server will allow your application to load significantly faster as static contents (e.g. images, CSS files) will be loaded from cache as opposed to having to be processed by the application server.
- Redundancy, Fail-over, Backups are built into the system end-to-end. DNS, load balancers, caching server, application server, and the databases all run on multiple servers in different availability zones such that if failures do occur there will be little or no downtime. Scale up your application by moving it from one set of servers to another set of servers with more powerful hardware. You don’t have to commit to the hardware in order to run your application. If you need more power, in just 30 seconds our system can move your application with no downtime to a more powerful server.
- Scale out your application by adding more servers to run your application. If you get a spike of new customers or even slow and steady growth, you’ll be able to easily add more servers to run your application. You won’t have to worry about managing any of those servers, you just move a slider to add them.
- No setup or configuration of servers. You don’t need to setup any server software like Apache, MySQL, FTP, and you don’t have to worry about firewalls or security.
- Easily deploy your application to all the serves with a single command, and you get the added benefits of the provided version control system (git). This gives you an “undo” button to deployments.
If you need a fast, reliable and scalable host for your web application so you can write some code and you don’t want to deal with managing servers, then getting a PaaS is the answer. If you are confident at setting up servers, you love doing it, and you rather do that than writing code, than a traditional host is a better option.