Qué es Infraestructura como Código
La Infraestructura como Código (IaC) se refiere a la gestión y el aprovisionamiento de la infraestructura a través de código, en lugar de a través de procesos manuales. Cuando hablamos de aprovisionamiento y gestión de infraestructura nos referimos al hardware, pero también a los recursos virtuales, las plataformas, los sistemas de contenedores, los servicios y las topologías, entre otras cosas.
La infraestructura como código facilita la gestión de la configuración y ayuda a evitar cambios de configuración ad hoc no documentados.
En este sentido, gracias a la IaC se puede garantizar que se aprovisione siempre el mismo entorno al crear archivos de configuración que contienen las especificaciones de la infraestructura concreta.
En el pasado, la gestión de la infraestructura de TI era un trabajo complejo, ya que los administradores de sistemas tenían que gestionar y configurar manualmente todo el hardware y el software necesario para que las aplicaciones funcionaran. Hoy, gracias a los avances en el cloud computing, esta tarea se ha simplificado en cierta medida y permite el uso de archivos de configuración repetibles para generar entornos de implementación consistentes para el desarrollo de CI/CD.
Los enfoques de la Infraestructura como Código
Hay dos maneras de abordar la Infraestructura como Código: la declarativa o la imperativa. ¿En qué se diferencian? Pues bien, el enfoque declarativo lo que hace es definir el estado del sistema que deseamos incluyendo los recursos necesarios y sus propiedades. Hecho esto, la herramienta de IaC configurará el sistema automáticamente. Gracias a que se mantiene una lista del estado actual de todos los objetos del sistema, la retirada de la infraestructura cuando termina su utilidad es mucho más sencilla.
Por otro lado, en un enfoque imperativo se define cómo debe configurarse la infraestructura y se detalle el proceso exacto según el cual se debe conseguir. A este enfoque se le suele conocer como enfoque procedimental, y define los comandos necesarios para lograr una configuración específica. Como la denominación «procedimental» deja entrever, esos comandos se deben ejecutar en el orden correcto, uno por uno. Es un enfoque frágil e inflexible que no admite actualizaciones. Si por alguna razón fuese necesario introducir algún cambio, los técnicos se enfrentarían a un problema ciertamente complejo.
Muchas de las herramientas de IaC apuestan por el enfoque declarativo y aprovisionan automáticamente la infraestructura. Ante un cambio, el que sea, la herramienta de IaC declarativa aplicará esos cambios de manera automatizada.
Principales ventajas de la infraestructura como código
Disponer de cualquier herramienta que ayude en la automatización de procesos es, sin duda, una ventaja por sí misma para cualquier empresa. En el caso de la infraestructura como código, las empresas pueden gestionar los requisitos de sus infraestructuras de TI de varias maneras, lo que revierte en una serie de ventajas que podemos resumir en estas líneas:
- Reducción de los errores y mejora en la homogeneidad de la infraestructura. El gran problema de la configuración manual es que, por muy experto que sea quien se encargue de hacerla, nunca está 100% libre de errores. Errores que pueden ser inadvertidos, inconscientes o simples despistes debidos a las prisas. La IaC elimina esos errores y también cualquier tipo de cambio de la configuración. Además, al codificar y documentar las especificaciones se evitan los cambios de configuración ad hoc no documentados de manera natural.
- Ahorro de costes, ya que es posible gestionar las máquinas virtuales de manera programática, eliminando la necesidad de configuraciones y actualizaciones manuales. ¿Qué significa esto? Que tiene el mismo coste gestionar una máquina o cientos de ellas. Esto elimina la necesidad de nuevo personal y de nuevo hardware, reduciendo los costes de manera notoria.
- Mediante la infraestructura como código podemos incrementar la eficacia enormemente, porque se puede disponer de una plantilla para el aprovisionamiento que simplifica la configuración, el mantenimiento y la gestión del sistema. Crea una infraestructura elástica que resulta repetible y escalable. Ello significa que DevOps puede acelerar cada paso del desarrollo de software y lanzar más aplicaciones diariamente.
- Otra ventaja evidente es la velocidad a la que podemos disponer de una infraestructura totalmente preparada, gracias al aprovisionamiento automático.
- Finalmente, la infraestructura como código permite el control de versiones, por lo que los archivos de configuración pueden someterse a control de fuentes, como cualquier otro archivo de código fuente de software. Esto redunda en una reducción general del riesgo.
En resumen, antes de IaC, el personal de TI tenía que cambiar manualmente las configuraciones para gestionar la infraestructura. Sí, seguro que se utilizaban scripts para automatizar ciertas tareas, pero nada más. Gracias a la IaC, la configuración de la infraestructura se realiza con código fácil de editar, copiar y distribuir, además de disponer de él bajo control de origen, lo que mejora la seguridad.