Choose an IaC tool
· 4 min read
This is an ADR document that I shared within the development team, with updates. Please make the final decision based on your team's circumstances.
Context and Problem Statement
We need a standardized approach to managing our infrastructure across multiple environments. Our main criteria include:
• Language Preference: Ability to use familiar languages.
• Multi-Cloud Support: Flexibility to deploy across different cloud providers.
• Imperative vs. Declarative: Balance between imperative programming and declarative configuration.
• Ecosystem Maturity: A robust set of modules and community support.
The three tools under review are:
- AWS CDK: Provides an imperative approach in familiar programming languages for AWS deployments.
- Terraform (and tfcdk): Terraform offers a mature, declarative model with multi-cloud support. The tfcdk option brings a CDK-like abstraction to Terraform.
- Pulumi: Similar to CDK in that it supports imperative programming languages but offers true multi-cloud capabilities.