Herramientas imprescindibles para DevOps

4min

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.

Índice

¿Qué es DevOps?

DevOps es una de las disciplinas más nuevas en el ámbito del desarrollo de aplicaciones web y, por ello, en los últimos años han surgido toda una serie de herramientas que vienen a facilitar los procesos de despliegue, integración continua y testing de los proyectos.  DevOps ofrece un ecosistema muy rico de utilidades que continúa madurando mes a mes, por ello es a veces difícil saber qué herramientas acabarán estableciéndose como dominadores de cada área. No obstante, vamos a intentar dar un poco de luz y destacar algunas de las más importantes en cada clasificación.

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.
  • GitLab es una estupenda alternativa para GitHub usada de manera muy habitual por equipos de software propietario.
  • 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.

integración continua

  • GitHub Actions. Aparecido hace menos tiempo, se ha hecho muy popular gracias al tirón del propio servicio de GitHub. Por supuesto, lo puedes integrar con servidores de todo tipo de proveedores, pero las máquinas que inician los procesos están en GitHub y los minutos de operación cuentan en tus límites como usuario de GitHub.
  • GitLab CI/CD. GitLab tiene desde hace más tiempo integrada toda una cantidad de utilidades orientadas a integración y despliegue continuos.
  • Circle-CI. Un servicio específico y especializado para CI/CD, muy sofisticado.

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.
  • Vagrant: esta herramienta proporciona el mismo flujo de trabajo independientemente del rol, ya sea desarrollador, operador o diseñador.

Sistemas de infraestructura en código

Los sistemas de declaración de infraestructura por medio de código son especialmente populares entre los DevOps porque permiten automatizar la creación de servidores y su configuración, incluso el despliegue de las aplicaciones.

  • TerraformEs una herramienta muy popular para la creación de infraestructura mediante código:  Infrastructure as Code (IaC), mediante un lenguaje declarativo que puedes usar tanto en servidores cloud como en servidores dedicados.
  • Ansible. Es el lenguaje más popular dedicado a la automatización de la configuración de la infraestructura. Puedes saber qué es Ansible y acceder a una serie de tutoriales en nuestro blog.

Tanto Terraform como Ansible están perfectamente integrados en el cloud de Arsys, por ejemplo mediante plugins en Data Center Designer.

Existen otros sistemas interesantes en esta clasificación, menos usados pero igualmente potentes como Chef o Puppet.

Sistemas de contenedores

Los contenedores han pasado a ser la opción preferida por los DevOps para el despliegue de aplicaciones de cara a la automatización y la escalabilidad.

  • Docker. Como no, Docker se ha transformado en el sistema de contenedores más ampliamente extendido.
  • Kubernetes. Por su parte, para la orquestación de contenedores se usa Kubernetes de manera generalizada. Puedes saber cómo gestionar tus contenedores con Kubernetes de una manera sencilla con nuestro servicio Managed Kubernetes.

Monitorización, gestión de logs y registro de errores

También es interesante la automatización del control de logs de aplicaciones desarrolladas y el software necesario para su funcionamiento, a fin de mantener afinados los sistemas y detectar posibles fallos de manera temprana.

  • 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.
  • Prometheus. Es un software para monitorización muy popular y de código abierto.
  • Grafana. Otra alternativa muy popular para monitorizar servidores y aplicaciones, así como gestionar los log.
  • ELK Stack (Elastic Stack). Otra serie de herramientas para la monitorización y la gestión de datos, su análisis y visualización en tiempo real.

Testing

Las propias herramientas de CI/CD tienen la posibilidad de automatizar testing, pero si queremos llegar un poco más lejos existen otras herramientas que nos pueden interesar como TestRail, K6 basado en Grafana o el poderoso Selenium para automatizar las pruebas en diferentes sistemas operativos y navegadores.

Manuel León

Productos relacionados: