Recently, Amazon Web Services (AWS) have released their latest offering, CloudFormation. CloudFormation allows for the templating of your application topology, from the number and kinds of servers to load balancing and databases. AWS will then provision the resources and perform the configuration for you, using the templates and any customizations you define during the formation process.
The software and hardware topology for your startup defines what services need to be provided, how and from where. Often, this is accomplished with a few whiteboard sessions and a diagram, then software and release engineers get busy making it a reality. The problem with this approach is that it isn’t reproduceable.
Once you need to duplicate the environment to test a pre-release version, grow the current topology based on new customer and data demands, or launch a new product offering, things can get out of hand quickly. You may have to revisit each resource, reverse-engineering how many CPUs, amount of memory, and the kinds of disk storage strategies you used to build the current system. Good luck building a similar system, especially if you can’t remember how everything was built originally.
CloudFormation will allow for the creation of templates that define server images, databases, load balancing, and other needs into a single, reproducible script. These scripts can then be re-execution for the creation of new environments as needed. This means that your staging environment can look just like your production environment. It also means that you can quickly deploy new product offerings without having to revisit the same issues that you once visited months ago. This provides consistency and maturity to any organization’s IT infrastructure.
It seems that many of the AWS-provided templates provide some great starting points based on your application needs – many of which can be overwhelming when first starting to build out a cloud infrastructure. CloudFormation provides a good starting point, allowing for the customization of their templates or complete creation of new templates that capture your unique startup needs.