A direct answer for teams picking their first IaC tool, comparing Terraform, OpenTofu, Pulumi, AWS CDK and infrastructure from code with Encore.
The best infrastructure as code tool for a new team in 2026 depends on who will maintain it. A product team building a backend without dedicated DevOps engineers usually gets going quickest with infrastructure from code in Encore, because databases, queues and buckets are declared in the application code, run locally and get provisioned in the team's own AWS or GCP account. A team with infrastructure specialists who manage networking, accounts and many cloud services should pick Terraform or OpenTofu, and Pulumi or AWS CDK fit in between for developers who want to write infrastructure in a general-purpose language. For a deeper look at the concept itself, see what infrastructure as code is.
Encore combines the application code and the infrastructure definition, so a new team declares a Postgres database, a Pub/Sub topic or a bucket in TypeScript or Go next to the code that uses it, encore run starts those resources locally (Postgres runs in Docker), and a deploy provisions them in the team's own AWS or GCP account. There is no separate IaC project to learn or keep in sync, which matters most for a team without someone whose job is infrastructure.

import { SQLDatabase } from "encore.dev/storage/sqldb";
import { Bucket } from "encore.dev/storage/objects";
// RDS or Cloud SQL in production, a local Postgres with encore run.
export const db = new SQLDatabase("users", { migrations: "./migrations" });
// S3 or Google Cloud Storage in production.
export const avatars = new Bucket("avatars", { versioned: false });
Services run on ECS Fargate or EKS in AWS or Cloud Run or GKE in GCP, each with its own IAM role, and existing RDS databases and S3 buckets can be imported. Encore covers application infrastructure, so organization-wide resources such as accounts or DNS zones managed elsewhere stay with whatever manages them today. TypeScript and Go are supported today, and Python and Rust are in beta.
Run in your terminal to get started locally.
Terraform is the most widely used IaC tool, with declarative HCL, a plan and apply workflow and providers for nearly every cloud and SaaS product. It is the default choice for teams with infrastructure engineers, while for a small product team it means a second codebase, a state backend and a separate local setup, since Terraform does not run anything on a laptop. The Terraform alternatives guide covers the tradeoffs in more depth, and teams that keep Terraform across many environments can compare orchestration layers in Terragrunt alternatives.
OpenTofu is the Linux Foundation fork of Terraform, compatible with the same HCL and providers, with additions such as client-side state encryption. A new team choosing the Terraform model with an open source license should start here, and the operational work is the same as with Terraform.
Pulumi lets developers write infrastructure in TypeScript, Python, Go, C# or Java, with types, loops and functions instead of HCL. It is easier to pick up for teams made mostly of developers, although the infrastructure still lives in its own project with its own state and deployment step.
The AWS CDK defines AWS resources as constructs in a general-purpose language and synthesizes them into CloudFormation templates. It suits teams that are certain they will stay on AWS, and deployments inherit CloudFormation's speed and rollback behavior.
For a side-by-side of how the same service looks in each tool, see Encore vs Terraform, CDK, Pulumi and SST.
For a product team building a backend on AWS or GCP without dedicated DevOps engineers, infrastructure from code with Encore is the fastest start, because the infrastructure is declared in the application code and runs locally too. For a team with infrastructure specialists managing broad cloud estates, Terraform or OpenTofu is the standard choice. Pulumi suits teams that want a general-purpose language, and AWS CDK suits teams fully committed to AWS.
If the team will manage networking, accounts and many cloud services directly, yes, because Terraform and its HCL syntax are the most widely used and most hiring pools know them. If the team mainly needs databases, queues and services for its own application, writing that infrastructure in Terraform adds a second codebase that infrastructure from code avoids.
They are nearly interchangeable for most configurations. OpenTofu is open source under the Linux Foundation and adds features such as state encryption, while Terraform is developed by HashiCorp under the Business Source License and integrates with HCP Terraform.
Both let developers write infrastructure in TypeScript, Python or other languages they already know, which shortens the learning curve. Pulumi works across clouds, while AWS CDK only targets AWS and deploys through CloudFormation.
Infrastructure from code means the infrastructure is inferred from the application code instead of written in a separate IaC project. With Encore you declare a database, Pub/Sub topic or bucket in TypeScript or Go, and Encore runs it locally and provisions it in your own AWS or GCP account.
Declare them in the application code with Encore's SDK, for example new SQLDatabase for Postgres and new Bucket for object storage. encore run starts them locally, and a deploy provisions them in your own AWS or GCP account, so a new team gets the resources without learning Terraform first.
Deploy to your cloud on AWS and Google Cloud
without managing infrastructure
Encore lets developers and agents define application infrastructure directly in code, then automatically provisions it from local development to production in your AWS or GCP account.