Infraestructura como código, una pieza más del puzzle DevOps

Infraestructura como código, una pieza más del puzzle DevOps

Hace ya cerca de cuatro años que escribir en el blog de Telefónica mi primer post sobre las nuevas tendencias en la gestión de infraestructura, mediante lo que por aquel entonces era uno de los palabros de moda, el DevOps.  Mucho tiempo ha pasado desde entonces y la realidad me ha mostrado como los clientes están empezando a afrontar los proyectos de infraestructura desde una visión mucho más pragmática y estructurada. Por aquel entonces, la integración de los departamentos de operaciones y desarrollo, era prácticamente una panacea, algo reservados a las empresas más punteras del sector tecnologico y un debe en la lista de “to-do” de muchos de los CIO y COO de este país.

En los últimos meses me he encontrado muchos clientes que ya afrontan sus proyectos de despliegue de infraestructura desde un enfoque más racional. El despliegue de infaestructura a través de scripting, les permite controlar de forma sencilla todos los cambios que se vayan a ejcutar sobre la misma, permitiendo alinear y trazar de incio a fin como las nuevas funcionalidades de sus aplicaciones o servicios, están afectados por los cambios que se realizan en cada una de las capas de infraestructura y aplicación.

Es sorprendente ver como el proceso que antes te podía llevar días o incluso semanas ahora es capaz de ser ejecutado mediante un script en sólo unas horas. Y uno de los facilitadores de este tipo de aproximación, es la gran cantidad de funciones publicadas por los proveedores de cloud a través de las APIs de sus servicios.

Las ventajas de utilizar este tipo de aproximación es la capacidad que tiene el propio administrador de sistemas de iterar y probar en múltiples ocasiones cual es la mejor arquitectura para las demandas que le llegan desde el área negocio. Pero si tuviese que enumerar, cuales son las principales ventajas de este tipo de despliegue, las resumiría en los puntos que te detallo a continuación:

  • Agilidad y Time to Market, la flexibilidad que nos permite este tipo de despliegue es tal que una vez realizado el script, iterar y validar diferentes configuraciones es tremendamente fácil y sencillo. Permitiendo mejorar las metricas de negocio asociadas a dicho despliegue, como pueda ser el despliegue de nuevos proyectos, reduciendo el tiempo de llegada al mercado de una nueva funcionalidad, aplicación o versión del servicio que prestamos a nuestros clientes finales, etc.
  • Libertad de elección, las funciones publicadas por los proveedores de cloud a través de sus API y la independecia de las herramientas disponibles en el mercado, permiten al usuario final realizar el despliegue en diferentes proveedores, sólo con modificar las llamadas que se realizan a cada uno de las APIs de los proveedores.
  • Infraestructura a golpe de vista, disponer de los scripts de configuración, permite disponer a golpe de vista de una foto completa de la infraestructura que hay desplegada para un proyecto, cliente o aplicación concreta. Así que si la persona que realizo el despliegue este o no en nuestra compñia, el script servira de base de conocimiento para todo aquel que se incorpore al proyecto.
  • Idempotencia, que es la propiedad de realizar una acción en multiples ocasiones, obteniendo siempre el mismo resultado.  O lo que es lo mismo, automatizar los despliegues evitando el tan terrible “efecto humano”.

A día de hoy es posible encontrar en el mercado, multidud de proveedores que nos permiten implementar proyectos de infraestructura mediante la codificación de un script, los más extendidos son Terraform, Puppet, Heat, etc. Pero si quieres conocer un poco más acerca de ellos, te dejo más detalle a continuación.

Herramientas de los principales proveedores de cloud pública


Cloud Formation

Permite crear plantillas de despliegue para los servicios de AWS codificadas a través de YAML en ficheros JSON. Cloud Formation se apoya en las APIs publicas del servicio e incluye una capa de abstracción adicional, orquestando el despliegue ordenado de los recursos, cuando haya interdependencias o restrecciones entre los mismos. El despliegue se puede realizar desde el ordenador del usuario o apuntando a un buckte de AS3 donde este almacenado el fichero.

Azure Resource Manager

Una de las características diferenciales de ARM es que permite el despliegue centralizado de infraestructura y las dependicias con las aplicaciones que queremos desplegar. dentro del mismo fichero es posible gestionar también las politicas de usuario, restringuiendo el uso de los mismos y sentando las bases para una posterior auditoria. Todo a través de plantillas descritas en un fichero JSON.

Google Cloud Deployment Manager

Permite especificar todos los recursos que necesitas para tu aplicación en un formato declarativo mediante YAML, así como también mediante plantillas creadas con Python o Jinja2. Permite el despliegue paralelizado del proyecto, y al igual que los anteriores es gratuitos para usuarios con una subscripción de GCP.

Herramientas cloud agnostic

Terraform

Permite crear planes de ejecución igual que si estuvieses programando una aplicación mediante un lenguaje de alto nivel,  el despliegue se basa en el llamado Plan de Ejecución. Este plan de ejecución se puede crear desde el lenguaje ad-hoc desarrollado por Hashicorp (empresa matriz de Terraform) llamado HCL Terraform syntax o bien mediante un fichero JSON estandar. Los provedores de servicios soportados actualmente por Terraform son IBM Cloud (Bluemix), AWS, Microsoft Azure, Google Cloud Platform, Oracle Cloud Infrastructure. O inclusive el depliegue sobre arquitecturas en cloud privada como VMware vSphere Infrastructure o modelos hibridos basados en Open Stack.

Heat

Nace como proyecto de la comunidad de Open Stack, con el objetivo de ser la pieza que permita orquestar el despliegue de infraestructura y aplicaciones dentro del ecosistema de clouds con el sello Open Stack ready. También soporta despliegues hibridos con otros proveedores de cloud pública como es AWS. E inclusive también con cloud privadas como vmware, quien hace años lanzó su programa VIO (VMware Integrated OpenStack) para automatizar los depliegues sobre el stack vmware mediante Heat.  Heat también permite la integración con otras piezas de Open Stak como es el caso de Telemetry para implementar servicios de auto-escalado dentro de sus plantillas de despliegue.

Puppet

Dispone de su propio lenguaje  DSL (domain-specific language)  basado en Ruby para el depliegue de infraestructura, a través del cuál podras definir el estado deseado de tu infraestructura y como se quiere llegar al mismo. Puppet  se integra con los principales proveedores de cloud pública como son AWS, Azure, Google Cloud, y VMware. Permitiendo la automatización y despliegue con una aproximación multicloud.

Así que ya sabes, saca el mayor provecho a tu infraestructura, agiliza su depliegue y operación. Para ello apoyate en la creación de plantillas y/o proyecto sobre alguna de las herramientas ya mencionadas.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *