¿Qué es la Infraestructura como Código (IaC)?
La Infraestructura como Código (IaC) es una práctica que trata la configuración de la infraestructura como si de software de programación se tratase, la cual es una parte imprescindible dentro del marco DevOps. Como hemos dicho anteriormente, con herramientas IaC construir una nueva infraestructura se vuelve más fácil, y es por esto que los cloud providers ya tienen sus propios orquestadores de infraestructura como código. Por ejemplo, Amazon tiene AWS CloudFormation, mientras que Google Cloud Platform tiene Cloud Deployment Manager. En el caso de herramientas como CloudFormation, estas permiten codificar los detalles de una infraestructura en un archivo de configuración y, a su vez, esos archivos de configuración permiten que la infraestructura se cree, modifique y destruya de manera controlada. Si se va a trabajar con más de un proveedor, es recomendable utilizar herramientas como Terraform, que utilizan de manera similar estos archivos de configuración para detallar la configuración de la infraestructura y, además, ser a la vez agnóstico de la nube y permitir que se combinen y compongan múltiples proveedores y servicios. Por otro lado, Terraform se puede utilizar para orquestar un clúster de AWS y OpenStack simultáneamente, al tiempo que permite que proveedores de terceros como Cloudflare y DNSimple se integren para proporcionar servicios de CDN y DNS.
Pero, ¿por qué recurrir a estas herramientas si desde el propio proveedor puedo montar mi propia infraestructura? ¿Qué beneficios tiene una infraestructura como código?
Recurrir a una infraestructura como código (IaC) no solo ofrece un control mucho más fino del uso de los recursos, sino una adecuación casi instantánea a las necesidades puesto que tendremos definida toda nuestra infraestructura en unas pocas líneas de código. Lo primero que tenemos que tener en cuenta es que las configuraciones iniciales en un nuevo cloud provider suelen ser engorrosas, es decir, una gran cantidad de configuraciones y horas descubriendo cómo funciona cada una de las diferentes piezas de éste. La infraestructura como código permite a las instancias gestionarse de manera programada. Esto elimina la necesidad de realizar, por ejemplo, configuraciones de los distintos componentes que declaremos. Así conseguimos una infraestructura “elástica”, es decir, escalable y replicable. Un ejemplo clave: una sola persona puede implementar y gestionar una infraestructura compleja con 600 instancias utilizando el mismo bloque de código y utilizando distintos cloud providers si así lo quisiera. Con esta práctica conseguimos velocidad, ahorro de costes y reducción del riesgo a la hora de implantar nuestra infraestructura. De este modo, concluimos que mediante IaC construir nuestra infraestructura se vuelve más rápido, seguro y manejable. En definitiva, nos permite a los administradores de sistemas crear código con toda la infraestructura que necesitemos y conectar las diferentes partes, ¡como si se tratase de asignaciones de variables en un lenguaje de programación! Como conclusión diremos que, gracias a las herramientas que posibilitan la IaC, es posible entregar entornos rápidamente y diseñados a escala. Y sí, es cierto que se requiere un esfuerzo inicial para montar toda la infraestructura como código pero, una vez lo tengas definido y replicable, los errores disminuirán y aumentará la productividad.