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.
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.
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.
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.
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.