Existen varias herramientas para hacer Infraestructura como Código. Las más conocidas son Terraform, CloudFormation, Pulumi y CDK. En este subcapítulo las comparamos para que entiendas sus diferencias y, sobre todo, por qué este libro elige Terraform. No se trata de que una sea «la mejor» en abstracto, sino de cuál encaja mejor para aprender y para la mayoría de casos.

Las cuatro herramientas

Terraform (de HashiCorp)

  • Qué es: la herramienta de IaC más popular y la protagonista de este libro.
  • Lenguaje: HCL (HashiCorp Configuration Language), un lenguaje declarativo creado específicamente para describir infraestructura. Es fácil de leer (lo veremos en el Capítulo 10).
  • Multi-nube: funciona con AWS, Azure, GCP y cientos de proveedores más, todos con el mismo lenguaje. Esta es su gran ventaja.
  • Declarativo: sí (como vimos en el subcapítulo 9.2).

CloudFormation (de AWS)

  • Qué es: la herramienta de IaC nativa de AWS.
  • Lenguaje: archivos YAML o JSON.
  • Solo AWS: es exclusiva de AWS. No sirve para Azure ni GCP.
  • Ventaja: está totalmente integrada en AWS y soporta los servicios nuevos de AWS muy rápido. No necesitas instalar nada extra.
  • Inconveniente: los archivos pueden volverse largos y verbosos, y te ata a AWS (vendor lock-in, recuerda el Capítulo 2).

Pulumi

  • Qué es: IaC usando lenguajes de programación de verdad (Python, TypeScript, Go, C#…).
  • Idea: en lugar de aprender un lenguaje específico, usas el lenguaje que ya conoces, con bucles, condiciones y funciones normales.
  • Multi-nube: sí.
  • Para quién: atractivo para desarrolladores que prefieren código «normal». A cambio, puede ser más complejo y requiere saber programar.

CDK (Cloud Development Kit, de AWS)

  • Qué es: como Pulumi pero de AWS: defines infraestructura con lenguajes de programación (TypeScript, Python, Java…) y, por debajo, genera CloudFormation.
  • Solo AWS (principalmente).
  • Para quién: desarrolladores del ecosistema AWS que quieren usar código en lugar de YAML. Existe también CDK for Terraform (CDKTF), que combina CDK con Terraform.

Tabla comparativa

Terraform CloudFormation Pulumi CDK
Creador HashiCorp AWS Pulumi AWS
Lenguaje HCL (propio, declarativo) YAML/JSON Python, TS, Go… TS, Python, Java…
Multi-nube No (solo AWS) Principalmente AWS
Curva de aprendizaje Suave Media Media-alta (saber programar) Media-alta
Popularidad / comunidad La mayor Alta (en AWS) Creciente Creciente
Te ata a AWS No No

Por qué este libro elige Terraform

Elegimos Terraform por razones muy concretas, parecidas a por qué elegimos AWS en el Capítulo 2:

  1. Es el estándar de facto del mercado

Terraform es, con diferencia, la herramienta de IaC más usada y demandada en ofertas de empleo. Aprenderla maximiza tus oportunidades profesionales.

  1. Es multi-nube (no te ata)

Con Terraform, lo que aprendes sirve para AWS, Azure, GCP y cientos de servicios más, todo con el mismo lenguaje. Si mañana cambias de nube, reaprovechas tu conocimiento. CloudFormation y CDK te atan a AWS.

  1. HCL es fácil de leer y aprender

El lenguaje HCL fue diseñado para ser legible y claro, incluso para quien no programa. Es más amable para empezar que escribir YAML largo o usar un lenguaje de programación completo.

  1. Comunidad y ecosistema enormes

Hay miles de ejemplos, módulos reutilizables (Capítulo 18) y respuestas a cualquier duda. La comunidad de Terraform es gigantesca.

  1. Encaja perfectamente con AWS

Como vimos en el Capítulo 2, el provider de AWS para Terraform es el más maduro y completo. AWS + Terraform es una de las combinaciones más demandadas.

¿Y las demás? No las descartes

Que elijamos Terraform no significa que las otras sean malas:

  • CloudFormation es excelente si trabajas solo con AWS y quieres integración nativa total.
  • CDK / Pulumi son geniales para desarrolladores que prefieren usar su lenguaje de programación favorito.

Lo bueno es que, una vez entiendes los conceptos de IaC (declarativo, estado, idempotencia…), pasar de una herramienta a otra es relativamente sencillo. Los conceptos son universales, como vimos con las nubes en el Capítulo 2.

Un apunte sobre las licencias (OpenTofu)

En 2023, HashiCorp cambió la licencia de Terraform a una más restrictiva. En respuesta, la comunidad creó OpenTofu, una versión de código abierto compatible con Terraform (es un fork). Para aprender y para la mayoría de usos, ambos son prácticamente idénticos y lo que aprendas aquí te sirve para los dos. Es bueno que sepas que OpenTofu existe como alternativa libre.

Lo que debes recordar

  • Las cuatro herramientas principales de IaC son Terraform, CloudFormation, Pulumi y CDK.
  • CloudFormation y CDK son solo de AWS; Terraform y Pulumi son multi-nube.
  • Pulumi y CDK usan lenguajes de programación; Terraform usa HCL (declarativo y fácil de leer); CloudFormation usa YAML/JSON.
  • Elegimos Terraform por ser el estándar del mercado, multi-nube (no te ata), con HCL legible y una comunidad enorme.
  • OpenTofu es una alternativa libre y compatible con Terraform, fruto del cambio de licencia de 2023.

En el último subcapítulo de este capítulo veremos el flujo de trabajo fundamental de Terraform: el ciclo plan → apply → destroy.

Cloud, AWS & Terraform — De cero a experto

Capítulo 1 · Qué es el cloud computing

Capítulo 2 · El mercado cloud y los grandes proveedores

Capítulo 3 · Regiones, zonas de disponibilidad y edge

Capítulo 4 · Cómputo: EC2

Capítulo 5 · Almacenamiento: S3

Capítulo 6 · Redes: VPC

Capítulo 7 · Identidad y acceso: IAM

Capítulo 8 · Bases de datos gestionadas

Capítulo 9 · Por qué Infraestructura como Código

Capítulo 10 · HCL: el lenguaje de Terraform

Capítulo 11 · Providers y estado

Capítulo 12 · Tu primera infraestructura real en Terraform

Capítulo 13 · Balanceo de carga y autoescalado

Capítulo 14 · Serverless con Lambda

Capítulo 15 · Mensajería y eventos

Capítulo 16 · Entrega de contenido y DNS

Capítulo 17 · Contenedores en AWS

Capítulo 18 · Módulos: reutilización y composición

Capítulo 19 · Workspaces y gestión de entornos

Capítulo 20 · Backends remotos y locking

Capítulo 21 · Testing de infraestructura

Capítulo 22 · Terraform en CI/CD

Capítulo 23 · Seguridad en profundidad

Capítulo 24 · Observabilidad: logs, métricas y trazas

Capítulo 25 · Optimización de costes

Capítulo 26 · Alta disponibilidad y disaster recovery

Capítulo 27 · Well-Architected Framework de AWS

Capítulo 28 · Arquitecturas serverless a escala

Capítulo 29 · Plataformas de datos en AWS

Capítulo 30 · Multi-cuenta y landing zones

Capítulo 31 · Platform Engineering e Internal Developer Platform

Capítulo 32 · Certificaciones AWS relevantes

Capítulo 33 · Proyectos para consolidar lo aprendido

Capítulo 34 · Recursos y comunidad

© Copyright 2024. Todos los derechos reservados