AWS CloudFormation - The best service to deploy your infrastructure on AWS
Use Cases and Deployment Scope
We use AWS CloudFormation to deploy our infrastructure on AWS platform. We have different accounts for different customers with the services being deployed via CloudFormation templates. All we have to do is modify the respective values of stages, environment variables for deployments and you could use the same template for deployment to different customers which makes our life easy.
Pros
- All resources can segregated based on stacks which provides greater visibility
- A complete audit trail of what went wrong while deploying a particular resource
- Automatically rollbacks if any service as part of CloudFormation results in an error
- The UI tool is useful
Cons
- Some services take a lot of time to create and it is frustrating after waiting for 20 mins some service fails, we have to retry whole process again.
- Deleting some resources is bit tricky if they are dependent on other stacks which is again dependent on some s3 bucket not being deleted
- Error description is not clear in some instances.
- Documentation needs to be improved
Likelihood to Recommend
AWS CloudFormation is well suited for scenarios where all of your resources need to be provisioned on AWS but it is not suited for hybrid cloud deployments. It's very easy for someone new to learn. The level of customization offered as part of the template specifically for AWS services is great. There is also a UI tool where we can drag and drop the services we want and it generates an yaml file which is very easy to use. The visibility of stacks and its resources and one place where we can track and identify the issues in deployment is great.