Terraform vs Pulumi
Two IaC approaches — HCL state files vs real programming languages.
| Aspect | 🏗️ Terraform | ⚡ Pulumi |
|---|---|---|
| Language | HCL (.tf files) | TypeScript, Python, Go, C#, Java, YAML |
| State | Local or remote (S3, Terraform Cloud) | Pulumi Service or self-managed backend |
| Ecosystem | Largest provider catalog, modules registry | Strong AWS/Azure/GCP, growing community |
| Testing | terratest, plan in CI, policy (OPA/Sentinel) | Unit tests in your language, integration tests |
| Team fit | Ops/platform teams, declarative standard | Dev teams who prefer code over HCL |
| Lock-in | Low — open source core | Low — open source, optional SaaS state |
When to use which
Terraform
Industry default, huge module library, and your team already knows HCL.
Pulumi
You want loops, classes, and real tests in TypeScript/Python for complex infra.