🏗️Infraestructura como Código

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.

#terraform#cloudformation#aws#iac#infraestructura como código

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?

¿Qué es CloudFormation?

Comparativa: Terraform vs CloudFormation

AspectoTerraformCloudFormation
ProveedoresMulti-cloud (AWS, Azure, GCP, 100+)Solo AWS
SintaxisHCL (más legible)JSON/YAML (más verboso)
Estado (State)Gestionado por TerraformGestionado por AWS
ComunidadMuy grande y activaGrande pero enfocada en AWS
Curva de aprendizajeMediaMedia-Alta
Integración AWSBuenaExcelente (nativa)
Soporte servicios nuevosDepende de la comunidadInmediato (AWS)
CostoGratuitoGratuito
Módulos/StacksMódulos reutilizablesStacks y Nested Stacks
Plan (preview)Sí (terraform plan)Sí (change sets)
RollbackManualAutomá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?

  • 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?

  • 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

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?

  • 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.

¿Quieres aprender más sobre esto?

Únete a talleres gratuitos o accede a contenido premium en la comunidad.