Herramientas imprescindibles para DevOps

Una definición muy precisa de lo que es DevOps es la «asociación entre el desarrollo de software y las operaciones de TI que pone de relieve la comunicación, la colaboración y la integración». En otras palabras, cómo los equipos de desarrollo y los encargados de la gestión de las operaciones se comunican más eficientemente para desplegar aplicaciones en producción. Para conseguir esta colaboración existen una serie de herramientas DevOps encargadas de muchas cosas, por ejemplo, de la automatización de entrega del software, de proporcionar la infraestructura necesaria para garantizar la calidad del proyecto o de la estabilidad de todos los sistemas.

SCM (Source Code Management)

En esta categoría entrarían las herramientas que coordinan la gestión eficaz del código fuente entre los desarrolladores de un proyecto. Sus componentes principales son el gestor de ficheros y el control de versiones para una correcta gestión.

Se permite el trabajo concurrente sobre los ficheros, habida cuenta de que se lleva un control estricto y documentado del trabajo de cada persona en cada bloque de código.

  • Git, una de las herramientas DevOps más populares, es uno de los principales servicios de control de versiones, muy valorado por los desarrolladores y las empresas. Permite grabar distintas versiones del código fuente de cualquier proyecto y recuperar cualquier versión anterior en caso de necesidad.
  • GitHub, es la versión web del repositorio Git.
  • Bitbucket, similar a GitHub  y que permite trabajar con ilimitados repositorios privados. En el caso de GitHub únicamente son gratuitos los repositorios públicos.
  • Subversion, una aplicación cliente-servidor para el control y gestión de cambios en el código fuente.

De muchas de estas aplicaciones ya hemos hablado en nuestro blog, tanto desde un punto de vista teórico como más práctico: Subversion, la alternativa centralizada a Git para el control de versiones, Cómo instalar Git en un Servidor CloudPara qué nos pueden servir las ramas de GitCómo ignorar archivos con Git mediante el archivo de configuración .gitignore o Cómo eliminar archivos de un repositorio Git después de ignorarlos.

Integración continua

Son herramientas que ayudan a cruzar  (una operación que se denomina merge entre los equipos técnicos) código creado por diferentes desarrolladores. De esta manera, evita que los desarrolladores dispongan de una copia muy diferente del trabajo global.

  • Bamboo es una herramienta que reúne compilaciones, pruebas y versiones automatizadas en un solo flujo de trabajo. Para la fase prueba, posibilita realizar pruebas automatizadas, así como pruebas paralelas que facilitan y agilizan la detección de errores. Automatiza el despliegue de los proyectos en todos los entornos disponibles, ofreciendo control sobre el flujo con permisos propios de cada entorno.
  • Jenkins es la alternativa/competencia de Bamboo y dispone, entre otras cosas, de más plugins (más de 1.000), y es una herramienta Open Source. Tienes más información sobre Jenkins y la integración continua en este artículo.

Virtualización

Son herramientas que posibilitan la prueba de software complejo en entornos controlados y aislados. La virtualización permite crear esos entornos controlados con las mismas características y requisitos que el sistema donde el software será instalado.

  • Docker: una plataforma que permite crear una aplicación y empaquetarla junto con sus dependencias y librerías en un contenedor o container, como se conocen habitualmente. Este contenedor software, a su vez, puede ejecutarse en otras máquinas. Si todavía no lo utilizas, te recomendamos el artículo ¿Por qué utilizar Docker en nuestros desarrollos?
  • Vagrant: esta herramienta proporciona el mismo flujo de trabajo independientemente del rol, ya sea desarrollador, operador o diseñador.

Otras herramientas DevOps interesantes

Kubernetes dispone de soporte para diferentes ambientes de ejecución de contenedores —por ejemplo, Docker— y es una herramienta muy valorada en entornos MultiCloud y de Nube Híbrida, por ejemplo.

Otras herramientas interesantes son las de monitorización y registro de errores. En esta categoría destacaríamos Nagios y Raygun.

  • Nagios es de las más populares, es Open Source y permite monitorizar el estado de cualquier infraestructura. Hace más sencillo el proceso de corrección de errores. Con Nagios se pueden almacenar logs de eventos, paradas y fallos e identificar tendencias. Esta última característica permite prever problemas y posibles fallos de seguridad. Dispone de gran cantidad de plugins y de una comunidad muy potente.
  • Por otro lado, Raygun permite diagnosticar problemas de rendimiento y reportarlos hasta la primera línea de código/función/API en la que comienza a desarrollarse el error. Además, nos sirve para identificar los diferentes errores en función de su prioridad.