What I described in Section 1 is fine for having an environment available for you to use all day, but what about keeping it up to date during the day?
When we create our stacks in our development VPC we pass in another parameter, this specifies if we want the stack to auto update or not. When this is set to true, a scheduled task is set up on the EC2 instance that polls S3 for the latest version of the application. If a newer version is found, the package is downloaded and installed on the instance.
Now we realise this means the EC2 instance cannot be considered a truly immutable server, as we perform in place updates on them, however this is something we do only on QA, and even then these servers are re-built from scratch daily.
We have chosen to do this rather than rebuild a new EC2 instance each time as we already had the in place update available on our installation packages, and this results in the least amount of downtime for our development environment.
Next I will share with you how Just Eat have implemented on demand performance testing in AWS.