Cargando...

Qué es Infraestructura como código

Infrastructure as code (IaC) es un enfoque para la automatización de infraestructura basado en las buenas prácticas de desarrollo de software. La idea principal es que los sistemas y dispositivos utilizados para ejecutar aplicaciones sean tratados como si ellos mismos fueran software. Los equipos de desarrollo y los administradores de sistemas, gestionan cada vez más la infraestructura usando herramientas que automatizan el aprovisionamiento y configuración a través de código. Aprovechando estas herramientas podemos definir los servidores, redes, almacenamiento y otros recursos de TI en ficheros (plantillas), como si se tratase del código de una aplicación. Esto nos da la posibilidad de crear entornos replicables, versionar la infraestructura y automatizar todo el ciclo de desarrollo de software, incluyendo la integración, entrega e implementación continua.

IaC es un enfoque muy DevOps. DevOps es la unión de cambios culturales herramientas y buenas prácticas con el fin de entregar un producto (software) de calidad y de forma rápida. Esto se consigue principalmente con la colaboración entre el equipo de desarrollo y el equipo de operaciones (infraestructura). Está claro que las herramientas de IaC han ayudado a unir los dos equipos y eliminar la fricción que existía cuando los desarrolladores se preocupaban únicamente por el código de la aplicación, mientras que los administradores de sistemas se preocupaban por la estabilidad de la infraestructura. Implementando una cultura DevOps, todos van en la misma dirección.

Probablemente te estés preguntando ¿qué herramientas se utilizan? ¿Cuáles debo aprender? Realmente, hay muchas y todas son totalmente validas, sin embargo, te dejaré una lista de las que considero más importantes y que recomiendo aprender.

Packer: para automatizar la creación de imágenes de máquina. Esto es especialmente útil cuando queremos lanzar instancias de máquina completamente aprovisionadas y configuradas, incluyendo el código de la aplicación. Te sugiero leer nuestro artículo, Crear AMI en AWS con Packer.

Terraform: Es imposible entrar en temas de infraestructura como código sin mencionar Terraform. Es la principal herramienta para crear infraestructura reproducible, utilizado ficheros declarativos puedes aprovisionar entornos de desarrollo, pruebas y producción, idénticos con la misma configuración. Puedes utilizar Terraform para desplegar infraestructura en cualquier proveedor de nube, ya sea AWS, Azure, GCP, etc. Sin duda, es una herramienta que debes aprender.

Ansible: En la actualidad, Ansible también se puede utilizar para aprovisionar infraestructura, sin embargo, cuando nació la función principal era gestionar la configuración de los servidores, la instalación y configuración de software de forma paralela y automatizada, es decir, puedes ejecutar una configuración en múltiples servidores al mismo tiempo. Por ejemplo, imagínate que quieres realizar una configuración en varios servidores web, conectarse por SSH y ejecutar un Script es una opción, pero sería súper mejor si desde tu máquina pudieras ejecutar un solo comando para aplicar la configuración en todos los servidores. Bueno, eso es posible con Ansible. Finalmente, mencionar que estas herramientas son totalmente compatibles, puedes utilizar Ansible en combinación con Packer y Terraform.

Docker: Si nos referimos a tecnología de contenedores, Docker es el referente. Docker elimina las tareas de configuración repetitivas y se utiliza para automatizar el ciclo de desarrollo de aplicaciones rápido y portable. Con Docker puedes empaquetar las aplicaciones con todos los requerimientos, software, configuraciones y por supuesto, el código de la aplicación dentro del contenedor, este puede ser llevado a cualquier ambiente con la garantía que funcionará de la misma forma, ya sea en desarrollo o en producción. Si estás iniciando en el mundo Docker, te puede interesar Habilitar distro WSL 2 con Docker Engine en Windows

Kubernetes: Con Docker todo va de maravillas para desarrollar aplicaciones, pero se vuelve complejo en producción cuando tienes que gestionar varios contenedores, imagínate si son cientos o miles de contenedores, es imposible manejarlo. Es ahí donde emerge la figura del orquestador de contenedores, y Kubernetes es el líder sin discusión. Kubernetes sirve para automatizar la implementación, el escalado y la administración de aplicaciones en contenedores.

A parte de las herramientas mencionadas, te sugiero ponerle ojo a Pulumi, es una herramienta similar a Terraform, pero tiene cosas interesantes, por ejemplo, permite escribir las plantillas utilizando diferentes lenguajes. Por cierto, para aprovisionar infraestructura en la nube, también puedes hacerlo de forma programática con el lenguaje de programación de tu preferencia utilizando los SDK.

También, merece la pena mencionar Vagrant, una herramienta para crear entornos virtuales de forma sencilla y replicable. Consulta nuestro artículos:

Esto ha sido un resumen de lo que es infraestructura como código, para profundizar en el tema y conocer más a detalle los beneficios de infraestructura como código, te recomiendo un artículo súper completo de OpenWebinars, Infraestructura como código. Qué es y herramientas.


  • John Doe
    43 Sales$156,24 Totals
    62%
  • Rosy O'Dowell
    12 Leads$56,24 Totals
    32%

With supporting text below as a natural lead-in to additional content.

Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled.