A Infraestrutura como Código é inegociável para qualquer equipa que gira recursos cloud. A questão é que ferramenta usar. O Terraform e o Pulumi são as duas opções líderes, e a escolha entre eles define a forma como a tua equipa escreve, testa e mantém a infraestrutura durante anos.
A diferença fundamental
O Terraform usa HCL (HashiCorp Configuration Language) — uma linguagem declarativa de domínio específico, concebida especificamente para infraestrutura. Descreves o estado pretendido e o Terraform descobre como lá chegar.
O Pulumi usa linguagens de programação reais (TypeScript, Python, Go, C#, Java). Escreves código a sério que aprovisiona infraestrutura, com acesso a ciclos, condicionais, funções e a todo o ecossistema da tua linguagem.
Não é uma diferença cosmética. Afeta a forma como pensas a infraestrutura, como a testas, quem a pode escrever e como lidas com a complexidade.
Quando escolher o Terraform
A tua equipa é mais de operações do que de desenvolvimento. O HCL é mais simples de aprender para sysadmins e engenheiros de infraestrutura que não são programadores a tempo inteiro. O modelo declarativo corresponde naturalmente a "quero 3 servidores com estas especificações".
Queres um ecossistema de módulos enorme. O Terraform Registry tem milhares de módulos da comunidade para padrões comuns. Precisas de uma VPC com sub-redes que sigam as boas práticas? Há um módulo para isso. Precisas de um cluster EKS com grupos de nós geridos? Também há um módulo para isso.
Valorizas uma gestão explícita do estado. O ficheiro de estado do Terraform é um conceito de primeira classe. Sabes sempre o que o Terraform gere, e o terraform plan mostra exatamente o que vai mudar antes de aplicares.
Precisas de suporte multi-cloud. Os providers do Terraform cobrem todas as grandes clouds, ferramentas SaaS e componentes de infraestrutura. O mesmo fluxo de trabalho funciona para AWS, Azure, GCP, Cloudflare, Datadog e PagerDuty.
A tua organização já tem experiência em Terraform. Mudar de ferramenta tem um custo real. Se a tua equipa já escreve bom Terraform, mudar para Pulumi só por mudar não compensa a disrupção.
Quando escolher o Pulumi
A tua equipa é, antes de mais, de desenvolvimento. Se a tua infraestrutura é gerida por engenheiros de software (e não por uma equipa de operações dedicada), o Pulumi permite-lhes usar linguagens que já conhecem. Sem aprender HCL.
Precisas de lógica complexa. Gerar infraestrutura dinamicamente a partir de ficheiros de configuração, respostas de APIs ou consultas a bases de dados é natural numa linguagem de programação real e penoso em HCL.
Queres testes unitários a sério. Os programas Pulumi podem ser testados com frameworks de testes standard (Jest, pytest, Go test). Podes simular as APIs cloud e verificar que o teu código de infraestrutura produz o grafo de recursos correto.
Estás a construir uma plataforma interna. Se estás a encapsular o aprovisionamento de infraestrutura numa API ou num portal de autosserviço, a interface programática do Pulumi encaixa melhor do que chamar terraform apply a partir da shell.
Precisas de tipagem forte. TypeScript + Pulumi deteta erros de configuração em tempo de compilação. Passaste uma propriedade errada? Erro de tipos antes mesmo de correres o código.
Comparação prática
Curva de aprendizagem: O Terraform é mais simples para começar, mas esbarra em muros de complexidade com padrões avançados (dynamic blocks, condicionais complexas). O Pulumi é familiar para programadores, mas exige compreender o ciclo de vida dos recursos e a gestão do estado.
Gestão do estado: Ambos usam ficheiros de estado. O Terraform tem o terraform cloud, backends em S3, etc. O Pulumi tem o Pulumi Cloud (SaaS) ou backends autogeridos (S3, Azure Blob).
Deteção de drift: O Terraform tem terraform plan e terraform refresh. O Pulumi tem pulumi preview e pulumi refresh. Ambos são equivalentes.
Custo: O Terraform é de utilização gratuita, mas com código-fonte disponível e não open source (Business Source License desde 2023). O OpenTofu é o fork open source. O Pulumi é open source, com uma camada de gestão SaaS paga.
Integração com CI/CD: Ambos se integram com GitHub Actions, GitLab CI, Jenkins, etc. O Terraform tem um suporte do ecossistema ligeiramente melhor devido à quota de mercado.
A nossa recomendação
Para a maioria das equipas, o Terraform é a escolha pragmática. O ecossistema é maior, a bolsa de talento é mais profunda e o modelo declarativo cobre 90% das necessidades de infraestrutura sem complexidade.
Escolhe o Pulumi quando tiveres uma equipa com forte peso de desenvolvimento, precisares de infraestrutura dinâmica complexa ou estiveres a construir uma plataforma que aprovisiona recursos de forma programática.
Não escolhas com base na demo que parece mais vistosa. Escolhe com base em quem vai manter este código daqui a 2 anos e que competências terá.
Conclusão
Ambas as ferramentas estão prontas para produção e têm bom suporte. A escolha "errada" não é nenhuma delas — é gerir a infraestrutura manualmente através das consolas cloud. Escolhe a ferramenta que corresponde às competências da tua equipa, compromete-te com ela e investe em aprendê-la a fundo. Os custos de mudança são reais, por isso toma uma decisão ponderada e mantém-na.