Infrastructure design for my personal projects

Phase 2


The various projects I have worked on have moved around different hosters a few times. A few of them first launched in Heroku, but quickly out grew the lower tiers and would be too expensive to run on Heroku. I later moved to another easy to deploy rails host. They announced they were shutting down so I had to rush to build a working system at a low cost. After this I ended up going with a self managed VPS.

What it looked like before the project started

There was a single server that had everything except RabbitMQ. This meant the database (postgres), cache (redis), and the app server (passenger)

In AWS (due to their free tier for a year) I have an instance of RabbitMQ living.

The Plan

Phase 1 - Complete

Move the database and the cache over to dedicated machines.

Any of the applications not currently using a cache, add a cache to them

This required some code changes and to harden the firewalls between these servers.

Except for the cache and database no longer running on it, the current server would remain mostly the same.

Phase 2 - In progress

Build a new app server setup to be part of a Docker Cluster.

App by app move applications over to Docker and to the new server.

Most likely by the time this is done I will have 2 Docker servers acting as a cluster.

Phase 3 - Planning

As I work though phase 2, I will finalize the plans for this.

The basic plan for phase 3 is to re-evaluate how I host these apps. Wether or not moving to a more Docker container focused hosting would be better from the cost side of things. Looking at options like AWS EC2 Container Service or IBM Bluemix containers

Below are screenshots showing the initial setup and how the new setup will look.


Currently phase 1 is complete and I am working on transiting everything over to Docker in phase 2.