Currently I am using Elastic Beanstalk because it means I don't have to worry about machines or scaling. Using the configuration (http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/custom...) files I am able to install any extra packages I need or run commands. After I am more confident that out EC2 config will not change I will create an AMI to launch new instances from so that I don't have to wait for the server to install the packages I need.
I run 2 environments in my app (develop and production) my production branch is master and I work on a "develop" branch and push those changes to EB to test before merging and committing them in the master branch.
I run 2 environments in my app (develop and production) my production branch is master and I work on a "develop" branch and push those changes to EB to test before merging and committing them in the master branch.