Terraform vs CloudFormation: qual IaC usar
Terraform e CloudFormation resolvem o mesmo problema com filosofias opostas. Um é agnóstico de nuvem; o outro vive dentro da AWS. A escolha depende do seu contexto, não de preferência.
Terraform e CloudFormation resolvem o mesmo problema com filosofias opostas. Um é agnóstico de nuvem; o outro vive dentro da AWS. A escolha depende do seu contexto, não de preferência.
Terraform e CloudFormation resolvem o mesmo problema com filosofias opostas. Um é agnóstico de nuvem; o outro vive dentro da AWS. A escolha depende do seu contexto, não de preferência pessoal.
Escopo e portabilidade
Terraform, da HashiCorp, gerencia recursos em AWS, Azure, GCP e dezenas de outros provedores com a mesma linguagem HCL. CloudFormation só provisiona recursos AWS. Se sua infraestrutura é 100% AWS, essa diferença pesa menos. Se há um banco gerenciado na GCP ou um CDN em outro provedor, o Terraform evita manter duas ferramentas e dois fluxos de trabalho.
Linguagem e curva de aprendizado
HCL é declarativa e relativamente legível. YAML ou JSON do CloudFormation também são declarativos, mas verbosos: um bucket S3 com políticas exige mais linhas no CloudFormation do que no Terraform. Quem já escreve YAML para CI/CD sente menos atrito inicial com CloudFormation. A diferença aparece na manutenção, não no primeiro deploy.
Estado e gerenciamento
Terraform mantém um arquivo de estado que mapeia recursos reais ao código. Isso dá controle fino, mas exige backend remoto (S3, Terraform Cloud) para trabalho em equipe. CloudFormation gerencia o estado internamente via stacks. Menos configuração, menos visibilidade sobre drift. Nenhum dos dois é gratuito em complexidade: ambos cobrem o custo operacional.
Custo
As duas ferramentas não têm licença. O custo real está no tempo de engenharia e no armazenamento de estado. Terraform Cloud tem plano gratuito limitado e planos pagos por usuário. CloudFormation não cobra pelo serviço, mas stacks travadas ou rollbacks mal configurados consomem horas de trabalho. Para times pequenos, o custo oculto tende a ser maior que qualquer mensalidade.
Integração com AWS
CloudFormation nasce dentro da AWS: IAM, Service Catalog, CDK e console falam a mesma língua. Terraform depende do provider AWS, mantido pela HashiCorp e pela comunidade, com defasagem ocasional em serviços recém-lançados. Se a empresa adota serviços AWS no dia do anúncio, o CloudFormation costuma chegar primeiro.
Veredito
Para quem opera exclusivamente na AWS e quer integração nativa, CloudFormation é a escolha direta. Para quem precisa de multi-cloud, portabilidade ou já usa outros produtos HashiCorp, Terraform entrega mais flexibilidade. Times híbridos podem usar os dois, mas isso adiciona camadas de governança que poucos justificam.
FAQ
Terraform e CloudFormation podem ser usados juntos?
Sim. É comum usar CloudFormation para recursos nativos da AWS e Terraform para o restante. O custo é manter dois estados e duas pipelines. Só vale quando há um motivo claro, como um serviço AWS sem provider Terraform maduro.
Qual é mais fácil de aprender?
CloudFormation tem menos conceitos iniciais porque não exige backend de estado. Terraform cobra esse aprendizado cedo, mas a lógica de providers e módulos se reaproveita em outros provedores. Depende do quanto você pretende sair da AWS.
Terraform substitui o CloudFormation?
Não substitui, cobre. O Terraform consegue provisionar a maioria dos recursos AWS, mas perde integrações profundas com IAM, Service Catalog e CDK. Em ambientes regulados, essa diferença pode ser decisiva.
Qual escolher para uma equipe pequena?
Se a equipe é pequena e opera só na AWS, CloudFormation reduz configuração. Se há planos de multi-cloud ou a equipe já conhece HCL, Terraform evita uma migração futura. O tamanho da equipe importa menos que o escopo da infraestrutura.