Metodología DevOps: qué es y para qué sirve

9min

En este artículo vamos a hablar de DevOps, una de las disciplinas más recientes dentro del desarrollo de software, dedicada a lidiar con los sistemas informáticos desde un punto de vista más cercano al desarrollador.

Índice

¿Qué es DevOps?

DevOps es una relativamente novedosa disciplina de la ingeniería del software que se encuentra a caballo entre la administración de sistemas y el desarrollo. Esta disciplina aborda todos los procesos de automatización de las operaciones del despliegue de software, las pruebas y otras actividades necesarias en el desarrollo ágil.

Bajo este término se engloban muchos tipos de actividades como:

  • Creación automática de servidores
  • Despliegue de software en servidores
  • Trabajo con entornos diversos como desarrollo y producción
  • Ejecución automática de las pruebas del software
  • Ejecución automática de procesos de revisión del código
  • Integración y despliegue continuos

Ventajas de la metodología DevOps

Las metodologías DevOps nos permiten realizar de manera automatizada procesos que, de otro modo, llevaría tiempo de realizar y serían bastante tediosos, liberando a los desarrolladores o administradores de sistemas de trabajos repetitivos.

La idea es afinar todo un conjunto de sistemas, herramientas y reglas para definir acciones automáticas cuando ocurren sucesos en el flujo del desarrollo. De este modo se pueden detectar problemas de manera automática en los proyectos, evitando que se desplieguen si no están en perfectas condiciones.

Por tanto, la ventaja principal es la mejorar los procesos de desarrollo del software, lo que se traduce en distintas ventajas:

  • Liberar de trabajo a los desarrolladores y administradores de sistemas
  • Evitar interrupciones en el trabajo de los desarrolladores, mejorando sus flujos
  • Facilitar la mejora de la calidad del código
  • Evitar que se cuelen errores por despiste del equipo humano
  • Conseguir liberar versiones de aplicaciones con mayor frecuencia

Métodos DevOps

Los procesos DevOps son muy populares en la actualidad. Provienen principalmente de las metodologías ágiles de desarrollo del software, aunque a decir verdad los pueden usar en cualquiera de los procesos de desarrollo.

Vamos a enumerar los marcos de trabajo más habituales de los DevOps.

Scrum

Es un marco de trabajo para la realización de procesos que ha sido adaptado al desarrollo de software por la comunidad ágil. 

Scrum contiene una serie de pasos para el desarrollo de software que se dividen en diversas actividades que se realizan de manera iterativa en periodos de tiempo que se denominan sprints.

Kanban

Es otro marco de trabajo para el desarrollo de software que busca mejorar todavía más el tiempo que se dedica a la gestión del proceso de desarrollo y del software en sí. Mientras que en scrum se divide el trabajo en ciclos que se llaman sprints en Kanban se tiene a realizar un ciclo continuo. Además existen otras herramientas como los tableros Kanban.

Agile

Aparte de los dos marcos de trabajo mencionados anteriormente, cualquier proceso de desarrollo ágil incluye la optimización de los procesos mediante la automatización realizada por los profesionales DevOps. 

Los procesos de desarrollo ágiles se conocen a menudo con el término Agile. Sin embargo, la utilidad de las prácticas DevOps ha hecho que este tipo de profesionales sea especialmente demandado en todos los equipos de desarrollo, sea cual sea la dinámica de trabajo.

Herramientas utilizadas en la metodología DevOps

Existen multitud de herramientas DevOps que se pueden usar para las distintas etapas o actividades relacionadas. Estos procesos incluyen a su vez diferentes etapas.

Planificación

Esta etapa permite a los profesionales DevOps detectar qué flujos deben implementarse para que el software se adapte mejor a las necesidades de los proyectos y cómo se va a colaborar con los desarrolladores para integrar el código de cada versión de manera fluida y automática.

Codificación

Durante la codificación los desarrolladores realizan su trabajo de manera común y en equipo. En esta etapa los profesionales aportan código al proyecto para implementar las nuevas funcionalidades que se haya acordado en la etapa actual.

Compilación

Ocasionalmente los proyectos se deben compilar, ya sea por estar trabajando en un lenguaje compilado o transpilar si estamos en un lenguaje como Javascript o TypeScript, que requiere adaptar el código fuente a diversas plataformas. Los profesionales DevOps pueden realizar flujos de trabajo para que estas compilaciones se realicen de manera automática.

Prueba

La prueba del software se tiene que realizar para cada aportación de código al repositorio. Durante la prueba se corren los tests del software para detectar que todas las funcionalidades nuevas realizan su trabajo de manera adecuada y que las nuevas incorporaciones de código no han introducido fallos en las partes ya realizadas anteriormente en las aplicaciones.

Puesta en marcha o despliegue

Una vez realizadas las pruebas y en el caso que todas hayan sido pasadas adecuadamente, es posible la puesta en marcha del proyecto, para lo que se realiza generalmente un despliegue del código en el servidor de producción. El despliegue se realiza también de manera automática gracias a los pipelines de las herramientas DevOps.

Funcionamiento

Además de las pruebas del software, las aplicaciones se deben de verificar mediante el funcionamiento de los sistemas.

Estas pruebas de funcionamiento se pueden realizar de manera manual, aunque muchas veces se automatizan mediante aplicaciones que son capaces de capturar los posibles errores que se hayan encontrado en las aplicaciones. 

Supervisión

Existen profesionales encargados de la supervisión de los sistemas automáticos de captura de errores. Para ello se utilizan procesos de monitorización de los sistemas y se revisan los log de las aplicaciones. Generalmente se pueden establecer reglas especiales en herramientas que nos permiten recibir alertas cuando se producen diversas situaciones anómalas.

Prácticas de DevOps y sus herramientas

Los procesos DevOps nos facilitan algunas de las prácticas deseables en proyectos modernos. Ahora vamos a resumir estas prácticas DevOps enumerando algunas de las principales herramientas usadas para cada una de ellas.

Desarrollo continuo

Gracias a los DevOps, los profesionales pueden realizar su trabajo de desarrollo de manera continua, sin interrupciones innecesarias, centrándose en las partes que realmente les interesan a los desarrolladores y a los clientes, que es aportar valor mediante las actualizaciones frecuentes del software.

Para el desarrollo continuo es necesario el uso de herramientas de sistemas de control de versiones (Git principalmente) o hosting de repositorios (como GitHub o GitLab).

Realización de pruebas continuas

Gracias a las pruebas del software es posible contar con aplicaciones más robustas y, por tanto, libres de errores. También asegurar que errores antiguos no vuelven a aparecer.

Con cada implementación de funcionalidades o refactorización del código es necesario pasar las pruebas, por lo que también deben automatizarse y conseguir que el proceso de desarrollo y la ejecución de las pruebas sea ágil y provoque las mínimas interrupciones.

Estas pruebas se pueden correr gracias a herramientas como Jenkins, Travis o Teamcity. También hay herramientas como Selenium que nos permiten las pruebas de integración, incluso otras más modernas como TestSigma o Tricentis Tosca.

Integración continua

Gracias a los procesos DevOps es posible realizar una integración continua de cada mejora del código. Con cada nueva funcionalidad o cada corrección del software se aporta código a una rama del repositorio y se deben pasar las pruebas que garantizan que esos cambios han sido incorporados sin provocar errores. Todo esto se realiza de manera frecuente y automatizada.

Existen muchas herramientas para la integración continua como podrían ser CircleCI, Github Actions, GitLab, el propio Jenkins, etc.

Entrega continua

Cuando se ha verificado que el software está correctamente integrado, se despliega de manera automática en los distintos entornos, llegando al entorno de producción donde estará disponible para los clientes finales de la aplicación.

Estos cambios se realizan con despliegues de manera continua y automatizada. Con ello se consigue que la introducción de nuevas funcionalidades sea más frecuente y por tanto la mejora del software se realiza de manera más fluida y progresiva.

Las propias herramientas de integración continua suelen aportar también la entrega o despliegue continuos.

Puesta en marcha continua

Los procesos anteriores permiten aumentar la fiabilidad del código, evitando problemas gracias a la detección automatizada de errores. Con ello mejora la confianza y seguridad del equipo de desarrolladores, por lo que también los proyectos se pueden beneficiar de publicar las mejoras rápidamente.

Otro de los objetivos de los DevOps es conseguir que estos cambios de las aplicaciones puedan ser incorporados sin la necesidad de que las aplicaciones se detengan y manteniendo los servicios y aplicaciones funcionando sin pausas. 

En este área se usan mucho los entornos virtualizados, que permiten conseguir poner en marcha servidores de manera rápida y frecuente. Además es muy habitual el uso de herramientas como Docker o Kubernetes.

Supervisión continua

Para la supervisión continua de las aplicaciones se configuran herramientas que permiten realizar la monitorización de las aplicaciones. Algunas de las alternativas más comunes y avanzadas son New Relic, Nagios o Prometheus.

Infraestructura como código

Para que los procesos de despliegue y la creación de los entornos de pruebas o preproducción se realicen de manera automática es necesario disponer de herramientas de infraestructura como código. Estos sistemas nos permiten especificar con código los distintos pasos que se deben hacer para la creación de las infraestructuras, de modo que se pueden ejecutar de manera automática.

Algunas de las herramientas para realizar Infraestructura como código son Puppet, Vagrant, Ansible o Terraform.

Fernán García de Zúñiga

Productos relacionados: