everything-as-code Desarrollo

Everything as Code: 5 beneficios de la Infraestructura como código

27/07/20 5 min. de lectura

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:

main benefits of infraestructure as a 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 …

chema-polo

Chema Polo

Santander Global T&O

Treky veteran, Rugby player, Teleco and physicist who enjoy everything related to sailing and my family. Apart from that, I invest the little free time I have in learning any type of technology.

Currently, I work at the Global CTO and my job is focused on the public Cloud adoption, more specifically in Next Gen Platform & Automation, where every day we learn more about development, cloud, infrastructure, networks … In short, a passionate about automation and a strong defender of the evolution towards Everything as Code…

 

👉 My LinkedIn profile

 

Otros posts