Cada vez se habla más de la infraestructura como código (Infrastructure as Code, IaC en inglés) y su evolución a «todo como código» (Everything as Code). Entendiendo la infraestructura como código para el despliegue y aprovisionamiento de nuestra infraestructura a partir del código que podemos someter al mismo control de calidad que cualquier código de aplicación, entonces…
¿Por qué no empaquetar infraestructura, comunicaciones y aplicaciones en un solo proyecto? Hablemos de esta película …
Hace mucho tiempo, en una galaxia muy, muy lejana… Es un período de batalla tecnológica. Los rebeldes DevSecOps, atacando desde una base oculta, han ganado su primera victoria contra el malvado imperio sysadmin.
Durante la batalla, Rebel DevSecOps logró robar planes secretos para el arma definitiva del Imperio, el despliegue manual de la Estrella de la Muerte, un procedimiento manual blindado con suficiente poder para crear un planeta entero de servidores virtuales, pero obtuvieron un GitHub lleno de entregables de «Everything as Code»… Que la fuerza te acompañe…
¿Cuántas veces has recibido la solicitud de habilitar la intervención manual a través de los portales de aprovisionamiento debido a que «tenemos prisa», «el tiempo se nos echa encima», «va a ser más rápido»? Eso ya no es una excusa …
Los 5 principales beneficios de la Infrastructure as Code:

☄️ Velocidad
El primer beneficio significativo que brinda la IaC es la velocidad, sí, estás leyendo bien, si pasas algún tiempo haciéndolo en un entorno de desarrollo, no necesitas pasar la misma cantidad de tiempo recreándolo en cada entorno manualmente.
La infraestructura como código permite configurar rápidamente la infraestructura completa ejecutando un script. Puedes hacerlo para cada entorno, desde desarrollo hasta producción, pasando por etapas, control de calidad y más. IaC puede hacer que todo el ciclo de vida de desarrollo de software sea más eficiente.
? Consistencia
Los procesos manuales resultan en errores, punto. Los humanos son falibles. Nuestros recuerdos nos fallan. La comunicación es difícil, y en general somos bastante malos en eso. Como has leído, la administración manual de la infraestructura generará discrepancias, sin importar cuánto lo intentes. IaC resuelve ese problema haciendo que los archivos de configuración sean la única fuente de verdad. De esa manera, garantiza que las mismas configuraciones se implementarán una y otra vez, sin discrepancias.
? Trazabilidad
Este es rápido y fácil. Como puedes versionar los archivos de configuración de IaC como cualquier archivo de código fuente, tienen una trazabilidad completa de los cambios de cada configuración. Se acaba el adivinar quién hizo qué y cuándo.
?? Más eficiencia durante todo el ciclo de desarrollo de software
Al emplear la infraestructura como código, podemos implementar sus arquitecturas de infraestructura en muchas etapas. Eso hace que todo el ciclo de vida del desarrollo de software sea más eficiente, elevando la productividad del equipo a un nivel mucho más alto.
Podríamos tener programadores que usen IaC para crear y lanzar entornos de sandbox, lo que les permitirá desarrollar de forma segura y aislada. Lo mismo funcionaría para los equipos de control de calidad, que pueden tener copias perfectas de los entornos de producción en los que ejecutar sus pruebas. Finalmente, cuando llega el momento de la implementación, podemos impulsar tanto la infraestructura como el código a la producción en un solo paso.
? Repetibilidad
La capacidad de repetir infinitamente es uno de los mayores beneficios. Podemos crear artefactos parametrizables que podemos reutilizar en cualquier lugar y repetir en cualquier momento lo mismo.
¿Cómo funciona todo esto?
Las herramientas de IaC pueden variar en cuanto a características específicas de cómo funcionan, pero generalmente podemos dividirlas en dos tipos principales:
- Las que siguen el enfoque imperativo. Este enfoque imperativo «da órdenes». Define una secuencia de comandos o instrucciones para que la infraestructura pueda alcanzar el resultado final.
- Y las que siguen el enfoque declarativo. Un enfoque declarativo, por otro lado, «declara» el resultado deseado. Es decir, en lugar de delinear explícitamente la secuencia de pasos que la infraestructura necesita para alcanzar el resultado final, este enfoque muestra cómo se ve el resultado final.
Si crees que las categorías anteriores tienen algo que ver con los paradigmas del lenguaje de programación, ¡estás en lo cierto!
Debido a la razón anterior, hemos seleccionado Terraform (declarativo) para nuestro entorno de IaC, hablemos sobre los beneficios de mantener el estado de su implementación en las próximas publicaciones …