Tras pasar años desde su adopción por startups y Big Tech, donde por antonomasia ocurre el I+D más destacado del sector, una nueva era de automatización IaC se extiende como la pólvora entre los equipos IT de organizaciones grandes, medianas y pequeñas de todo el mundo.

La automatización no es un concepto nuevo. Tradicionalmente, los equipos de infraestructura y aplicaciones TI han ido incorporando prácticas de automatización como los scripts o las plantillas, para evitar repetir las mismas operaciones manuales una y otra vez en tareas como clonar una máquina virtual o aplicar un cambio de software. Algunas de ellas ya han conseguido un estado de maduración muy sólido, como por ejemplo la realización de backups, que ya hace tiempo que se ejecutan diariamente de forma automática sin intervención técnica. Por tanto, la automatización ya está implantada en nuestros equipos IT.

Del mismo modo, en años venideros seguiremos automatizando nuestros procesos, explorando nuevas vías hacía la “Hiperautomatización” y la “aiops”. Cómo tecnólog@s buscaremos tecnologías que nos ayuden en esta labor, avanzando hacia un futuro donde lo que antes era innovación pasará a ser la actualidad del mercado e identificar los desafíos que debemos abordar será clave para tomar decisiones.

Veamos entonces algunos desafíos importantes que abordar:

Durante los últimos años hemos vivido cómo empresas de diferentes sectores, atraídas por la idea de llevar la automatización al siguiente nivel, llamaban a la puerta de la "Infraestructura como Código". Hemos cubierto todo el espectro: desde definir estrategias IaC para un sinfín de equipos responsables de redes, sistemas, almacenamiento, aplicaciones, bases de datos, desarrollo, seguridad y otras áreas, hasta implantarlas y crear las guidelines a seguir. También hemos formado a los equipos encargados de la transición, transformando juntos la operación de los sistemas. En este post quiero invitarte a repasar los pormenores de esta experiencia. ¿Preparad@s? ¡Vamos a ello!

Empecemos por el principio, ¿qué es IaC?

IaC son las siglas de infraestructura como código. Significa, en esencia, que escribiré la definición de los componentes de mis sistemas y sus configuraciones como código, en un "lenguaje de programación/configuración".

Esto posibilita dejar en segundo plano las interfaces gráficas para la operación y los cambios manuales unitarios, que sólo ponen palos en las ruedas de nuestra automatización al encontrarse fuera del “gitflow” en el que vamos a trabajar. Por tanto, IaC eleva a un primer plano el uso de un repositorio de código (git) como fuente de verdad. El uso de Git tiene un gran impacto a nivel global en el desarrollo de software, unas buenas prácticas que vamos a replicar en nuestros proyectos de infraestructura. Escribir todo como código implica adoptar nuevas metodologías, aprender a utilizar nuevas herramientas y, si bien existe una curva de aprendizaje, una vez superado el escalón inicial nunca más querrás mirar hacia otro lado.

Ejemplo escrito en HCL (Terraform):

resource "aws_instance" "host1" {
 ami           = "ami-0c55b159cbfafe1f0"
 instance_type = "t2.micro"
}

Bases para la construcción de estrategias IaC

Hemos visto unas pinceladas sobre las implicaciones de empezar con IaC. Hablemos más en profundidad de sus principios para enfocarnos después en el potencial de aplicar las estrategias en nuestros equipos de operaciones:

Recapitulando, si tuviéramos que simplificarlo todo y resumirlo en tres pilares, serían estos:

Las herramientas de infraestructura como código, crean la oportunidad de trabajar realizando cambios con mayor frecuencia, rapidez y de manera más confiable, lo que mejora la calidad general de nuestros sistemas. Pero los beneficios no provienen de las herramientas, sino de cómo las usamos.

Que una funcionalidad nueva suba a producción más rápido significa responder de forma más ágil a las demandas del mercado o de mis clientes, y puede suponer una ventaja estratégica de negocio y/o que mis clientes perciban qué mi producto tiene una calidad más alta. Como no podemos quedarnos con una sola ventaja, veamos: ¿por qué merece la pena IaC?

¿Cuáles son las ventajas de implementarla?

Ahora que hemos visto las ventajas, pasemos a ver las tecnologías.

Dos grandes “patas”

Podemos dividir IaC en dos bloques:

¿Qué tecnologías existen?

Terraform, AWS CloudFormation, Azure Resource Manager, Google Cloud Deployment Manager, Pulumi, Ansible, Chef, Puppet, Salt y un sinfín de opciones. Dependiendo de cada cliente o proyecto tendremos que tomar algunas decisiones. ¿Cómo saber cuál conviene más a mi caso de uso? Repasemos algunos puntos importantes a tener en cuenta.

¿Qué tener en cuenta para elegir la tecnología apropiada?

¿Cómo puedo ir más a fondo?

Si te interesan estos temas te invitamos a leer “Infrastructure as Code” de Kief Morris, de donde hemos extraído grandes lecciones para aplicar en nuestros proyectos.

Conclusión

Las tecnologías de IaC eliminan las barreras para hacer cambios en los sistemas de producción y esto genera nuevos desafíos. La mayoría de las organizaciones quieren acelerar su ritmo de cambio, mejorar la agilidad de sus procesos y hacer más robustos sus sistemas, pero no pueden permitirse ignorar los riesgos y la necesidad de gobernanza sobre ellos. Por ello y para avanzar en ésta línea, necesitamos establecer más controles automáticos.

¿En qué medida crees que debemos potenciar estas estrategías? Gracias por tu tiempo, te leemos en los comentarios.

Cuéntanos qué te parece.

Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.

Suscríbete

Estamos comprometidos.

Tecnología, personas e impacto positivo.