En este Terraform vs Cloudformation, repasaremos las diferencias entre ambas, ventajas y desventajas de cada una.
Terraform
Terraform es una herramienta Open Source que admite implementaciones de múltiples plataformas de Cloud. Es conocida por su simplicidad y facilidad de uso. Permite la creación y gestión de recursos de infraestructura utilizando un lenguaje declarativo llamado HCL (HashiCorp Configuration Language).
Terraform es capaz de crear un plan que muestre los cambios que se realizarán en la infraestructura antes de que estos se apliquen. Esto ayuda a evitar posibles errores y cambios inesperados en el entorno.
Este artículo sobre Terraform podría interesarte.
AWS CloudFormation
AWS CloudFormation es un servicio nativo de AWS que proporciona una forma de crear y administrar recursos de cloud. Se basa en plantillas JSON o YAML y está estrechamente integrado con los servicios de Amazon Web Services.
Un beneficios de CloudFormation es que permite la creación de pilas completas de recursos en una sola plantilla. Esto facilita la administración y la implementación de entornos complejos.
El versus
Al comparar Terraform vs CloudFormation, ambas herramientas tienen sus puntos fuertes y débiles:
Pros de Terraform
- Su lenguaje, HCL, es más fácil de leer, entender y más extensible
- Compatible con múltiples nubes y muchos otros proveedores
- La reutilización de código con módulos es fácil y súper potente
Contras de Terraform
- En continuo desarrollo y más posibilidad de encontrar bugs
- Los valores sensibles (como passwords, tokens, etc) se guardan en plano en el archivo de estado.
Pros de CloudFormation
- Está estrechamente integrado con los servicios de AWS
- Permite la creación de entornos complejos con facilidad
- Existe templates de productos de terceros listos para desplegar en AWS
Contras de Cloudformation
- Solo trabaja con la nube de AWS
- Su lenguaje, YAML o JSON, en grandes templates no es tan fácil de leer y mantener
- La reutilización de código es vía Nested Stacks, lo cual es limitado y poco práctico
En resumen, ambas son muy buenas opciones. Cada una con sus ventajas y desventajas. Pero, en mi posición personal, prefiero Terraform principalmente por:
- Su lenguaje HCL (lo prefiero por encima del YAML/JSON de Cloudformation)
- Soporte de múltiples proveedores de Cloud (no estoy limitado a AWS)
- Se integra mejor en flujos CI/CD con casi cualquier otra herramienta
Es así que, siempre que puedo, evito usar Cloudformation. Pero, es esta una postura netamente personal. ¡Ojo con ello!
Terraform vs Cloudformation