La Infraestructura como Código es innegociable para cualquier equipo que gestione recursos cloud. La pregunta es qué herramienta usar. Terraform y Pulumi son las dos opciones líderes, y la elección entre ambas determina cómo tu equipo escribe, prueba y mantiene la infraestructura durante años.
La diferencia fundamental
Terraform usa HCL (HashiCorp Configuration Language) — un lenguaje declarativo de dominio específico diseñado expresamente para infraestructura. Describes el estado deseado y Terraform averigua cómo llegar a él.
Pulumi usa lenguajes de programación reales (TypeScript, Python, Go, C#, Java). Escribes código de verdad que aprovisiona infraestructura, con acceso a bucles, condicionales, funciones y todo el ecosistema de tu lenguaje.
No es una diferencia cosmética. Afecta a cómo piensas la infraestructura, a cómo la pruebas, a quién puede escribirla y a cómo gestionas la complejidad.
Cuándo elegir Terraform
Tu equipo es más de operaciones que de desarrollo. HCL es más fácil de aprender para sysadmins e ingenieros de infraestructura que no son desarrolladores a tiempo completo. El modelo declarativo encaja de forma natural con "quiero 3 servidores con estas especificaciones".
Quieres un ecosistema de módulos enorme. El Terraform Registry tiene miles de módulos de la comunidad para patrones habituales. ¿Necesitas una VPC con subredes que sigan las buenas prácticas? Hay un módulo para eso. ¿Necesitas un clúster EKS con grupos de nodos gestionados? También hay un módulo para eso.
Valoras una gestión explícita del estado. El archivo de estado de Terraform es un concepto de primer nivel. Siempre sabes qué gestiona Terraform, y terraform plan muestra exactamente qué va a cambiar antes de aplicar.
Necesitas soporte multi-cloud. Los providers de Terraform cubren todas las grandes nubes, herramientas SaaS y componentes de infraestructura. El mismo flujo de trabajo sirve para AWS, Azure, GCP, Cloudflare, Datadog y PagerDuty.
Tu organización ya tiene experiencia con Terraform. Cambiar de herramienta tiene un coste real. Si tu equipo ya escribe buen Terraform, pasarse a Pulumi porque sí no compensa la disrupción.
Cuándo elegir Pulumi
Tu equipo es, ante todo, de desarrollo. Si tu infraestructura la gestionan ingenieros de software (no un equipo de operaciones dedicado), Pulumi les permite usar lenguajes que ya conocen. Sin aprender HCL.
Necesitas lógica compleja. Generar infraestructura de forma dinámica a partir de archivos de configuración, respuestas de APIs o consultas a bases de datos es natural en un lenguaje de programación real y doloroso en HCL.
Quieres pruebas unitarias de verdad. Los programas de Pulumi se pueden probar con frameworks de testing estándar (Jest, pytest, Go test). Puedes simular las APIs cloud y comprobar que tu código de infraestructura produce el grafo de recursos correcto.
Estás construyendo una plataforma interna. Si envuelves el aprovisionamiento de infraestructura en una API o en un portal de autoservicio, la interfaz programática de Pulumi encaja mejor que invocar terraform apply desde el shell.
Necesitas tipado fuerte. TypeScript + Pulumi detecta errores de configuración en tiempo de compilación. ¿Pasas una propiedad incorrecta? Error de tipos antes incluso de ejecutar el código.
Comparación práctica
Curva de aprendizaje: Terraform es más sencillo para empezar, pero choca con muros de complejidad en patrones avanzados (dynamic blocks, condicionales complejos). Pulumi resulta familiar a los desarrolladores, pero exige entender el ciclo de vida de los recursos y la gestión del estado.
Gestión del estado: Ambos usan archivos de estado. Terraform tiene terraform cloud, backends en S3, etc. Pulumi tiene Pulumi Cloud (SaaS) o backends autogestionados (S3, Azure Blob).
Detección de drift: Terraform tiene terraform plan y terraform refresh. Pulumi tiene pulumi preview y pulumi refresh. Ambos son equivalentes.
Coste: Terraform es de uso gratuito, pero con código fuente disponible y no open source (Business Source License desde 2023). OpenTofu es el fork open source. Pulumi es open source, con una capa de gestión SaaS de pago.
Integración con CI/CD: Ambos se integran con GitHub Actions, GitLab CI, Jenkins, etc. Terraform tiene un soporte del ecosistema ligeramente mejor gracias a su cuota de mercado.
Nuestra recomendación
Para la mayoría de los equipos, Terraform es la opción pragmática. El ecosistema es mayor, la bolsa de talento es más profunda y el modelo declarativo cubre el 90% de las necesidades de infraestructura sin complejidad.
Elige Pulumi cuando tengas un equipo con mucho peso de desarrollo, necesites infraestructura dinámica compleja o estés construyendo una plataforma que aprovisiona recursos de forma programática.
No elijas en función de qué demo parece más vistosa. Elige en función de quién mantendrá este código dentro de 2 años y qué habilidades tendrá.
Conclusión
Ambas herramientas están listas para producción y tienen buen soporte. La elección "equivocada" no es ninguna de las dos: es gestionar la infraestructura a mano desde las consolas cloud. Elige la herramienta que encaje con las habilidades de tu equipo, comprométete con ella e invierte en aprenderla a fondo. Los costes de cambiar son reales, así que toma una decisión deliberada y mantenla.