AWS CDK vs CloudFormation: código vs templates
O CDK permite escrever infraestrutura AWS em uma linguagem real que sintetiza para CloudFormation; o CloudFormation é o próprio motor de templates por baixo.
O CloudFormation provisiona infraestrutura AWS a partir de templates declarativos em YAML/JSON com estado gerenciado e change sets. O AWS CDK permite expressar a mesma infraestrutura em TypeScript, Python ou Java usando constructs de alto nível que sintetizam templates CloudFormation - então o CDK é uma camada de desenvolvedor sobre o CloudFormation.
| AWS CDK | CloudFormation | |
|---|---|---|
| Autoria | Linguagens reais + constructs | Templates YAML / JSON |
| Abstração | Alta (constructs L2/L3) | Recursos crus |
| Por baixo dos panos | Sintetiza CFN | Nativo |
| Reuso | Funções, pacotes, classes | Nested stacks, módulos |
| Melhor para | Devs querendo IaC em código | Templates simples/explícitos |
No CI
O CDK reduz drasticamente o boilerplate - constructs de alto nível conectam padrões sensatos - e os pipelines o tratam como um build normal que roda cdk synth e depois deploy. O CloudFormation cru é mais verboso, mas totalmente explícito e não tem etapa de synth nem toolchain de linguagem para gerenciar. Como o CDK compila para CloudFormation, você pode misturá-los e até cair para recursos crus quando necessário.
Acelere
Faça cache das dependências de linguagem do CDK e rode synth/deploy no CI. O synth e o deploy rodam em runners de CI; managed runners mais rápidos encurtam o build.
O veredito
Quer IaC baseado em código com constructs de alto nível e menos boilerplate: AWS CDK. Quer templates explícitos sem toolchain de linguagem: CloudFormation. O CDK é construído sobre o CloudFormation, então a escolha é de estilo de autoria.