La Caja de Herramientas DevOps

Publicado en

Aunque ya hemos comentado que DevOps es en esencia una cultura, no por ello podemos ignorar a las herramientas que nos pueden facilitar o acelerar las actividades de los distintos involucrados. En este artículo echaremos un vistazo general a distintos tipos de herramientas típicamente asociadas con DevOps, de manera que podamos entender cual es el propósito de cada una y como se relacionan entre sí.

Aprovisionamiento y configuración de ambientes

Cualquier administrador de sistemas ha vivido la frustrante experiencia de que una aplicación falle en producción, y al preguntarle al desarrollador al respecto nos conteste “pues funciona en mi máquina” ... (sí, en efecto dan ganas de ahorcarlos). Las herramientas de aprovisionamiento y configuración ayudan a evitar estas situaciones, ya que nos permiten especificar a gran detalle los ambientes de ejecución, de tal manera que puedan ser replicados de forma automatizada y repetible por medio de scripts. A esto es a lo que se refiere el concepto de “administrar la infraestructura como código”.

Entre las herramientas más conocidas para aprovisionamiento y configuración de sistemas están Chef, Puppet, Ansible y Salt. Este es un espacio novedoso en el que han surgido varias herramientas, principalmente de software libre, donde casi no hay presencia de los jugadores tradicionales (IBM, CA, HP, Microsoft).

Integración continua

La integración continua es una práctica que consiste en generar varias veces al día una versión nueva del sistema de software que un equipo está desarrollando. Dicha versión integra las copias de desarrollo de los distintos componentes en los que está trabajando cada desarrollador. Su objetivo es que los problemas de integración surjan lo antes posible y se mejore el entendimiento de las dependencias entre el código que cada quien está trabajando. Para lograr esto requerimos usar un servidor de integración continua. Entre los servidores de integración continua más conocidos están Jenkins, Atlassian Bamboo, Travis CI y JetBrains TeamCity.

Gestión de despliegue

En un ambiente efectivo de DevOps, las liberaciones a producción son frecuentes, predecibles y confiables. Las herramientas de esta categoría típicamente se dividen en dos tipos con propósitos específicos:

  1. Gestión de liberación (release management). Se enfocan en los aspectos de gestión para asegurar que un software está listo para ser liberado a producción. Destacan XebiaLabs Release, UrbanCode Release, CA Service Virtualization, Serena Release Control.
  2. Automatización de despliegue (deployment automation). Se enfocan en mover y activar los componentes de software requeridos a los distintos nodos de cómputo. Destacan XebiaLabs Deploy, UrbanCode Deploy, CA Release Automation, Serena Deployment Automation.

Soporte al flujo de trabajo

Además de las herramientas en las categorías descritas anteriormente, existe un gran número de herramientas que facilitan la comunicación, colaboración y calidad a lo largo del ciclo de desarrollo de software y que por lo tanto también se pueden considerar como parte de la “caja de herramientas para DevOps”. Ejemplos de esto son herramientas de control de versiones, pruebas (en sus distintas variantes), análisis de código, gestión de issues, e incluso comunicación entre miembros del equipo.

No he hecho mención específica a estas herramientas porque no considero que sean tan características de DevOps como las mencionadas en las categorías anteriores. Es decir, si desarrollas software profesionalmente, lo menos que puedo esperar, DevOps o no, es que uses control de versiones, tengas suites de pruebas y uses un registro de issues.

Habiendo explicado las principales categorías de herramientas para DevOps, te recomiendo que eches un vistazo a la Tabla Periódica de Herramientas DevOps preparada por XebiaLabs, donde se representan algunas de las herramientas DevOps más populares del mercado, organizadas simulando una tabla periódica de elementos. Definitivamente no es completa ni perfecta, pero no deja de ser un buen ejercicio que espero les sirva para tener una mejor perspectiva de esta caja de herramientas.