Pulumi vs AWS CDK
Infrastructure as real code. Both let you use TypeScript instead of YAML. One works everywhere. The other is AWS-only.
Pulumi
Pulumi works with AWS, GCP, Azure, Cloudflare, and 100+ providers. CDK is AWS-only (CDKTF exists for Terraform but it's separate). If you're multi-cloud or might be, Pulumi is the safer bet. Same DX, more flexibility.
Real Code, Finally
Both Pulumi and CDK let you define infrastructure in TypeScript, Python, Go, or other real languages. No more YAML. No more HCL. Loops, conditionals, type checking, refactoring — all the things you expect from programming.
This is a massive improvement over Terraform's HCL or CloudFormation's JSON/YAML.
Cloud Lock-in
AWS CDK generates CloudFormation templates. It's deeply integrated with AWS. If you're all-in on AWS and always will be, this is fine. The integration is tight and the constructs library is extensive.
Pulumi has providers for everything. AWS, GCP, Azure, Kubernetes, Cloudflare, Vercel, Datadog. One tool, one language, all clouds.
State Management
Pulumi manages state in their cloud service (free for individuals) or you can self-host it with S3+DynamoDB or their open-source backend.
CDK uses CloudFormation for state, which means you get CloudFormation's limitations: slow deployments, 500-resource stack limits, painful rollbacks.
Quick Comparison
| Factor | Pulumi | AWS CDK |
|---|---|---|
| Cloud Providers | 100+ (AWS, GCP, Azure...) | AWS only |
| Languages | TS, Python, Go, C#, Java | TS, Python, Java, C#, Go |
| AWS Integration | Good | Deep (native) |
| Deployment Speed | Direct API calls | CloudFormation (slower) |
| State Management | Pulumi Cloud or self-hosted | CloudFormation |
| Construct Library | Growing | Extensive (L2/L3) |
| Testing | Unit + integration | Unit + snapshot |
The Verdict
Use Pulumi if: You use multiple clouds, want faster deployments, or prefer not being locked into AWS.
Use AWS CDK if: You're all-in on AWS and want the deepest integration with AWS services and constructs.
Consider: Terraform is still the most widely used IaC tool. More hiring pool, more examples, more modules.
Pulumi works with AWS, GCP, Azure, Cloudflare, and 100+ providers. CDK is AWS-only (CDKTF exists for Terraform but it's separate). If you're multi-cloud or might be, Pulumi is the safer bet. Same DX, more flexibility.
Related Comparisons
Disagree? nice@nicepick.dev