The main reason why we started to make this is to move fast we should be able to easily deploy web apps without much risks. For this we're highly inspired by GitHub's internal deploy system.
Here's the list of missions we target:
- Every feature (every branch) should be deployed to the testing server (EC2 instance) with isolated state for each other. It makes features able to be independently verified by collaborators.
- If a feature seems to have no problem it should be able to merge into the upstream (master). Fortunately GitHub has made it very easy: pull requests.
- Every deploy should be able to anytime be rolled back including database schema, in a minute at least.