2

I'm a noobie to CloudFormation. But reading the documentation for CloudFormation, Amazon seems to think it is the method we should use to consistently, repeatedly deploy a given topology of AWS service instances. However AWS has been around for over a decade, and the AWS push for CF seems to be only within the last 5 years.

I stumbled across a great post, AWS OpsWorks vs AWS Beanstalk vs AWS CloudFormation?, which explores the strengths of different AWS deployment offerings. And given the needs of my organization for flexible and repeatable IaaS/PaaS deployments, CF seems to fit the bill.

What I want to know is: How prevalent is the use of CF, vs other "template" deployment technologies? What is YOUR team using for deploying repeated configurations of AWS services?

How usable/learnable is it? If I adopt CF, how likely is it that existing developers on AWS will already be familiar with it, and be able to use it straight off the bat? CF seems to support many or most AWS services already, but are people actually using it to repeatedly stamp out identically-configured topologies of services?

Or do most teams favor a simpler, less endlessly-configurable option? And if so, why?

What pitfalls do I need to watch out for when using CloudFormation Templates? What doesn't CF handle, which it really should?

1 Answers1

5

I'll try to answer most of your questions based on my personal experience:

What I want to know is: How prevalent is the use of CF, vs other "template" deployment technologies?

I can't assert to specific usage distribution, but I know people who use Terraform. Although Terraform supports CF, my team decided not to use it simply because CF already satisfies our needs.

What is YOUR team using for deploying repeated configurations of AWS services?

My team uses CloudFormation (without Terraform) to deploy our whole infrastructure to AWS

How usable/learnable is it?

Pretty easy. Start with a small template (ideally YAML), then build up from there. The aws cloudformation deploy will speed up your feedback loop.

If I adopt CF, how likely is it that existing developers on AWS will already be familiar with it, and be able to use it straight off the bat?

I think developers who are familiar to AWS can easily pick up CF. If you can find your way around AWS documentation, CF is just another service to learn. I can't assert to the likeliness that existing AWS devs are familiar with CF.

CF seems to support many or most AWS services already, but are people actually using it to repeatedly stamp out identically-configured topologies of services?

My team uses it to provision testing and production environments that have the same topology. Some parts of our infrastructure is duplicated for redundancy using shared CF templates.

What pitfalls do I need to watch out for when using CloudFormation Templates?

You have to watch out for some CF limits, namely the template body's maximum size, which is capped at 46KB. We have hit this limit a few times, especially when provisioning EC2 instances with larger user data scripts. That being said, you should not hit that limit early on, and there are many workarounds

What doesn't CF handle, which it really should?

From the top of my head: Elastic Transcoder, EC2 AMIs, API Gateway VPC Links. My team has circumvented these limitations using Lambda-backed custom resources, which allow you to extend CF to your needs.

Overall, my team is very satisfied with CloudFormation. It definitely helps us maintain our AWS accounts in order.

Hope this helps!

spg
  • 9,309
  • 4
  • 36
  • 41