Best practices for using CloudFormation to define enterprise-grade architectures
When it comes to architectural designs spawning multiple accounts, teams, and regions, there are a few guiding principles you should always keep in mind.
Keep templates small and reusable
When you are just getting started, you work with small templates targeting a minimal set of resources. Over time, the needs of your team and organization grow, which can lead to an uncontrolled expansion of the same template for all future additions. It is a good practice to restrict the scope of these templates based on the team’s responsibilities and the applications they own. Managing infrastructure resources for two different applications in the same stack can have adverse effects on the team’s agility and introduce dependencies. Furthermore, it also introduces an element of risk as some stack operations can affect all other resources.
Secondly, maintaining small templates promotes reusability...