One of my responsibilities on the work I do for the company, decided to remain anonymous, is creating a Staging environments for the new features and QA branches, but recently we were run into great features push and therefore such activity become a headache.
Now I’m looking for a solution and willing to share some finds :)
The Problems
Let’s state the problems.
1. Repetitive Process
There is nothing really hard with process, we relies on AWS Elastic Beanstalk, where new environment can be created in a few clicks, also I need to upload sample data, do final configurations and notify the concerned parties. But after a few repetitions such type of activity is no longer a fun.
2. Money Leaks
Another problem is a hight risk of an unexpected expenses:
- each environment multiplicy the billing no matter how much it used
- quite easy to forgot to terminate certain environment once it unnecessary
As a result expect quite higher amount at the end of the month.
Pull Requests
Since we switched to GitHub for our code work, the Pull Requests feature become a crucial part of our development workflow. This days I do Staging instances right from Pull Requests and it does work quite good so far.
Taking this and GitHub API into a count it wasn’t hard to come up with the idea described in the next section.
Solution: From Pull Request to Staging
The concept is quite similar to recently announced Travis-CI feature, so, whenever someone submit a pull request there will be an option to instantiate staging instance right from there, which would eliminate repetitive operations.
To reduce money leaks there must be some kind of monitoring shutting down idling instances after certain period of inactivity.
That’s all for now, I’ll continue brainstorming concept. Thoughts and advice are very welcome!