Infraestructura como código
Describir servidores, redes y bases de datos en archivos en vez de a clics.
Infraestructura como código (IaC) es escribir en un archivo de texto los recursos de nube que necesitás y dejar que una herramienta los cree. En vez de ir clickeando por la consola de AWS para armar una máquina virtual, un bucket y una base de datos, escribís "una instancia de Amazon EC2 de este tamaño, un bucket de Amazon S3 con este nombre, una base Amazon RDS", corrés un comando, y la herramienta hace que la nube coincida con el archivo.
La gran ganancia es la repetibilidad. El archivo vive en Git al lado del código de la aplicación, así que cada cambio se revisa, tiene autor y se puede deshacer. ¿Necesitás un entorno de prueba idéntico? Corrés el mismo archivo de nuevo. ¿Alguien borró un servidor sin querer? Lo volvés a aplicar y reaparece. Con clics no tenés nada de eso, y nadie se acuerda qué se clickeó hace seis meses.
Las herramientas habituales son Terraform (funciona con todas las nubes, con un lenguaje propio llamado HCL), AWS CloudFormation (solo AWS, en YAML o JSON), Pulumi y el AWS CDK (los dos usan lenguajes de programación comunes). Todas comparan lo que dice el archivo con lo que existe y muestran un plan ("va a crear 2, cambiar 1, destruir 0") antes de tocar nada.
Para quedarse
- Los archivos de infraestructura se versionan, revisan y reutilizan como el código de la app.
- Las herramientas muestran un plan de cambios antes de aplicarlos.
- Terraform es multi-nube; CloudFormation y CDK son nativos de AWS.
- "Drift" es cuando alguien cambia cosas a mano y el archivo ya no coincide con la realidad.
Para seguir leyendo
- ¿Qué es la infraestructura como código? (AWS)
- ¿Qué es Terraform? (documentación oficial, en inglés)
- Infraestructura como código (Wikipedia)