Terraform vs. CloudFormation
Terraform es una herramienta multi-cloud que funciona con AWS, Azure, GCP y más de 100 proveedores. CloudFormation es nativo de AWS y solo funciona con servicios AWS. Terraform tiene mejor sintaxis (HCL), mayor comunidad y más flexibilidad. CloudFormation tiene integración nativa con AWS, mejor soporte de servicios nuevos y es gratuito. Para proyectos solo AWS, ambos son válidos. Para multi-cloud, Terraform es la mejor opción.
Si trabajas con AWS, probablemente te hayas preguntado: ¿Terraform o CloudFormation? Ambas son excelentes herramientas de Infraestructura como Código, pero tienen diferencias importantes. En este artículo te explico las diferencias clave y cuándo usar cada una.
¿Qué es Terraform?
Terraform es una herramienta de código abierto de HashiCorp para gestionar infraestructura como código. Funciona con múltiples proveedores de nube (AWS, Azure, GCP, etc.) y servicios.
¿Qué es CloudFormation?
CloudFormation es el servicio nativo de AWS para gestionar infraestructura como código. Solo funciona con servicios de Amazon Web Services.
Comparativa: Terraform vs CloudFormation
| Aspecto | Terraform | CloudFormation |
|---|---|---|
| Proveedores | Multi-cloud (AWS, Azure, GCP, 100+) | Solo AWS |
| Sintaxis | HCL (más legible) | JSON/YAML (más verboso) |
| Estado (State) | Gestionado por Terraform | Gestionado por AWS |
| Comunidad | Muy grande y activa | Grande pero enfocada en AWS |
| Curva de aprendizaje | Media | Media-Alta |
| Integración AWS | Buena | Excelente (nativa) |
| Soporte servicios nuevos | Depende de la comunidad | Inmediato (AWS) |
| Costo | Gratuito | Gratuito |
| Módulos/Stacks | Módulos reutilizables | Stacks y Nested Stacks |
| Plan (preview) | Sí (terraform plan) | Sí (change sets) |
| Rollback | Manual | Automático |
Ventajas de Terraform
- Multi-cloud: Funciona con AWS, Azure, GCP y más
- Sintaxis HCL más legible y expresiva
- Gran comunidad y ecosistema de módulos
- Más flexible y extensible
- Mejor para proyectos que pueden migrar entre nubes
- State local o remoto (más control)
Ventajas de CloudFormation
- Integración nativa con AWS (mejor soporte)
- Soporte inmediato para servicios nuevos de AWS
- Rollback automático en caso de error
- Drift detection nativo
- Stack policies para control de acceso
- Mejor para equipos 100% AWS
- Gratis (solo pagas por recursos creados)
¿Cuándo usar Terraform?
Elige Terraform cuando:
- Trabajas con múltiples proveedores de nube
- Quieres evitar vendor lock-in
- Prefieres sintaxis más legible (HCL)
- Necesitas mayor flexibilidad
- Tu equipo ya conoce Terraform
- Quieres reutilizar código entre proyectos
¿Cuándo usar CloudFormation?
Elige CloudFormation cuando:
- Trabajas exclusivamente con AWS
- Necesitas soporte inmediato para servicios nuevos de AWS
- Valoras el rollback automático
- Tu organización estándar es CloudFormation
- Quieres integración nativa con otros servicios AWS
- Necesitas drift detection
Ejemplo de Sintaxis
Comparación de sintaxis para crear un bucket S3:
Terraform (HCL)
resource "aws_s3_bucket" "mi_bucket" {
bucket = "mi-bucket-2025"
tags = {
Name = "Mi Bucket"
}
}
CloudFormation (YAML)
Resources:
MiBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: mi-bucket-2025
Tags:
- Key: Name
Value: Mi Bucket
¿Puedo usar ambos?
Sí, puedes usar ambos en el mismo proyecto, pero no es recomendado porque:
- Puede crear conflictos en la gestión de recursos
- Aumenta la complejidad
- Dificulta el mantenimiento
- Mejor elegir uno y ser consistente
Conclusión
Terraform y CloudFormation son ambas excelentes herramientas. Si trabajas solo con AWS y valoras la integración nativa, CloudFormation es una gran opción. Si necesitas flexibilidad multi-cloud o prefieres sintaxis más legible, Terraform es la mejor elección. Para la mayoría de casos, Terraform ofrece más flexibilidad a largo plazo.
Domina AWS desde cero
Prepárate para tu Certificación AWS con laboratorios 100% prácticos y mentoría directa en nuestra Comunidad de Ingenieros.
Cuentas Temporales Incluidas • Mentoría SRE • Casos Reales