AWS CloudFormation is a very useful deployment mechanism provided by AWS and fully supported by Cloud Application Manager. We’ve recently made some changes to our product and one of the results is a very interesting AWS CloudFormation use case – splitting up gigantic and monolithic AWS CloudFormation templates into smaller, more manageable templates.
First, A Little Background
AWS CloudFormation is essentially a way to programmatically define and provision cloud infrastructure, via a JSON template. CloudFormation templates can be used for tasks such as setting up VPCs, creating autoscaling groups and launching EC2 instances into different network configurations.
Several enterprises are using CloudFormation templates to deploy increasingly complex infrastructure configurations. As a result, power users are rapidly discovering that their templates have become large, monolithic and extremely difficult to maintain.
Why Not Just Split Them Up?
In theory, splitting up a monolithic CloudFormation template into a set of smaller, manageable modules seems straightforward, but there are a few challenges.
- Since these modules contribute to a larger, overarching infrastructure deployment, users need a way to specify dependencies and ensure that the modules are deployed in the right order.
- These modules need a way to communicate with each other and share information such that one can take over where the