The Infrastructure as Code Question
If you're managing AWS infrastructure manually through the console, you're creating a single point of failure - the person who remembers how things are configured. Infrastructure as Code (IaC) solves this by making your infrastructure version-controlled, repeatable, and documented.
The two main options for AWS are Terraform (by HashiCorp) and CloudFormation (by AWS). Both work. The right choice depends on your situation.
CloudFormation
CloudFormation is AWS-native. It's built into the platform, uses JSON or YAML templates, and integrates tightly with every AWS service.
Advantages:
- Zero additional tooling - it's already in your AWS account
- Supports every AWS service on day one (often before Terraform does)
- Drift detection built in
- Integrates with AWS Organizations and Service Catalog
Disadvantages:
- Verbose template syntax
- AWS-only - if you ever use GCP or Azure, you'll need another tool
- Error messages can be cryptic
- Rollback behavior can be frustrating
Terraform
Terraform is provider-agnostic. It uses HCL (HashiCorp Configuration Language) and supports AWS, Azure, GCP, and hundreds of other providers.
Advantages:
- Cleaner, more readable syntax
- Multi-cloud support
- Large community and module ecosystem
- State management gives clear picture of what exists
- Plan output shows exactly what will change
Disadvantages:
- Requires managing state files (S3 + DynamoDB backend for AWS)
- New AWS features may take weeks or months to appear
- State drift can cause issues if resources are modified outside Terraform
- License changes have introduced uncertainty
Our Recommendation
For AWS-only shops with no plans to go multi-cloud: either works, but CloudFormation has lower operational overhead since there's no state to manage.
For organizations using or planning to use multiple cloud providers: Terraform is the clear choice.
For teams already using one or the other: switching has real costs. The grass isn't always greener. Invest in learning your current tool deeply before considering a migration.
The most important thing is to use something. Manual infrastructure management doesn't scale and creates unacceptable risk.
Written by
Chris EdwardsPrincipal Consultant, Edwards Consulting Group
Chris Edwards is the principal consultant at Edwards Consulting Group, where he helps organizations reduce AWS spend, harden their cloud security posture, and put AI to work in production. He writes about cloud architecture, FinOps, cybersecurity, and practical AI integration drawn directly from client engagements.
More about Chris Edwards→