AWS CloudFormation, Devops (Chef and AWS Opsworks)

CloudFormation templates are designed to perfectly map the set of resources that are needed for a project. Networks, servers, lambda functions, API gateway endpoints and data storage are all described in the template. Within the server (EC2) instances themselves, we tend to use devops frameworks such as Chef, allowing us to update and deploy software on each individual server quickly and automatically. This gives complete control over the whole deployment process.

For smaller projects, Elastic Beanstalk (see below) can also be a viable option for deploying applications.

Cloudformation, together with the Chef systems we build, enable a carbon copy of a live environment to be brought up with a single API call. This gives companies the power to instantly spawn a test environment for tweaks to an existing project or to have a virgin environment for a completely new system. Having a precisely defined, identical test environment gets rid of a lot of headaches when it comes to continuous deployment, too.

CloudFormation templates give certainty that all of a client’s infrastructure is both documented in code and can be fully understood. Any changes that are required can be fully monitored and managed. There is oversight of changes that have been made. It’s also easier to optimise individual components of a solution, and measure the effect of that optimisation. CloudFormation really is the heart of many AWS projects we have been involved with.

The combined CloudFormation + Chef approach gives us the power to build devops solutions. This in turn gives development and sysops teams full confidence to roll out the latest versions of their applications to live environments, knowing that these are already tested in a carbon-copy environment. And it also makes rolling back a great deal easier, too.

Opsworks is AWS’ own Chef implementation. It allows us to cut development time when building chef solutions, and automates some of the CloudFormation work we would normally do. So Opsworks can be ideal for smaller projects. Previous Opsworks infrastructure we have built includes a project to automatically manage and deploy the application hosting for hundreds of websites.