As I work on finishing up the coding for Deaton, it’s time to think about where we are going to host when we’re ready.
Hosting websites has gotten much easier, and cheaper over the last few years. Virtual computing has lowered the costs and removed many of the administrative headaches of simple, affordable and scaleable hosting.
The options fall into 3 main categories:
- Cloud computing services such as AWS or Azure
- Virtual Private Servers such as DigitalOcean or Linode
- Platform as a Service, such as Heroku
There are other hosting options that exist, but feel these are the most appropriate solutions, so I’m going to focusing on picking one of these three.
Cloud computing services
Cloud computing companies provide a collection of independent services that can be used together for your web application.
From load balancer, to server containers, to databases, to file storage and many more, you are free to use as many or as few as you want run your website. Additionally, they provider a layer of network services that you can use to securely connect all the services they provide.
Companies like Amazon, and Microsoft have invested huge amounts of money in the infrastructure to power these services. You are able to use these services at a fraction of the cost it would take to setup and run them yourself. You can start small and scale your usage as your application grows.
While running the services can be very cheap, there is a administrative cost to setup and maintain the services you need to operate your application.
Virtual Private Servers
Rather than providing a complete suite of services, some companies have focused on offering high performance virtual servers. Built primarily for developers they provide quick and easy mechanism to setup affordable Linux instances. The instances are offered in predefined configurations for many popular Linux distros, suitable for hosting many different development frameworks (Laravel, Ruby on Rails, etc).
While the instances come with the core operating system, and some server components installed, the developer is responsible for installing and configuring any software they need for hosting their application.
Platform as a Service
PaaS allows you to setup your application and rarely think about the underlying infrastructure. All the services that a cloud computing provider might offer are configured and maintained for you, so you can focus on building and running your application.
This does come with some additional cost and some restrictions. If you have any specific, particularly unique requirements in your application, you need to review the features of the PaaS to ensure those requirements can be satisfied. Heroku for example started as a platform specifically for Ruby on Rails hosting, but is now capable of host many different languages and frameworks, many different databases and many other associated hosting services.
Most PaaS’s offer a simple interface to create, configure, tune and scale your application. Doing deploys is often as simple as pushing code to a git repository.
Hosting for Deaton
In the past I’ve used all 3 of the above types of hosting options, in particular AWS, Heroku and DigitalOcean.
I don’t have any specific requirements for Deaton, just pretty well defined LAMP stack, I could therefore use any of the providers listed. Since Deaton is not aimed at the general public, I don’t expect to get huge amount of traffic, so I’m not worried about scaling.
AWS and Heroku offer a free tier, that can certainly be used during development, and in some cases even for production if your side project is small enough.
As AWS is one of the sponsors for the Product Hunt Hackathon, I decided to use them for hosting Deaton. Primarily I’ll be using EC2 containers, RDS and S3 for file storage.
I’ll discuss my actual setup when I’m ready to deploy the application.