DevOps fácil, parte 3: El paradigma ágil

Ya hemos visto modelos de desarrollo tradicionales como el desarrollo en cascada y el desarrollo en espiral. Ahora veremos en qué consiste el modelo de desarrollo ágil.

Antes de continuar debo aclarar que este paradigma comprende numerosas metodologías y técnicas. Para no desviarme del objetivo de esta serie –presentar DevOps como técnicas de fácil integración en los flujos de trabajo– solamente voy a hablar de un par de puntos muy específicos y vagos sobre este paradigma.

Este paradigma se encuentra al lado opuesto de los modelos tradicionales. Redefine el diseño de la solución, la documentación y la planeación de tal modo que no se base en decenas de documentos archivos en un repositorio, páginas y páginas de tecnicismos anticuados y difíciles de mantener, y siendo lo más flexible que se pueda para poder moldearse a las necesidades en el mundo real.

Este paradigma cuenta con múltiples metodologías, tales como Scrum, Kanban y XP. También cuenta con múltiples prácticas, como TDD, CI/CD, programación por pares, Backlogging, entre otros. Cada una de estas prácticas y metodologías tiene sus características y de acuerdo con las necesidad del equipo de trabajo y de la solución se puede optar por una u otra.

El paradigma de desarrollo ágil tiene doce principios, y de ahí deriva el Agile Manifesto. Es toda una filosofía y ha traído muchas ventajas a los equipos de desarrollo. Entre las ventajas más especiales que hay se pueden describir la importancia de la comunicación entre todos los actores –consumidores y desarrolladores–, y ciclos de desarrollo cortos.

¿Cuál es la relación entre una buena comunicación, ciclos de desarrollo cortos y DevOps? si has seguido la serie ya sabrás que el principal impedimento de una integración DevOps en modelos de desarrollo como cascada y espiral son los ciclos de desarrollo poco flexibles y a menudo lentos debido a los congelamientos a los cuales están expuestas las listas de características. El paradigma ágil al tener un ciclo de vida corto se convierte en un complemento natural para DevOps. Ambos se fusionan intuitivamente y permiten que el flujo de trabajo sea casi como el mecanismo de un reloj.

¿Cómo se complementan tan bien? En principio, el paradigma ágil está pensado para automatizar tareas que se repiten en todos los ciclos de desarrollo tales como las pruebas, que pueden ser unitarias, funcionales, de integración, de aceptación, entre otras. Recordemos que este paradigma se preocupa por una comunicación robusta, y esto quiere decir que la comunicación debe estar presente en todos los actores, y nunca debe estar fragmentada: el usuario final debe poder comunicarse con el equipo de soporte y desarrollo, y el equipo de soporte y desarrollo debe poder comunicarse con el equipo de infraestructura y operaciones. Mientras que el paradigma ágil ofrece prácticas que permiten la comunicación entre el usuario final y el equipo de desarrollo, DevOps ofrece un canal de comunicación entre el equipo de desarrollo y el equipo de infraestructura y operaciones. Y para cerrar con broche de oro, DevOps se preocupa del producto final y su mantenimiento.

La retroalimentación de los usuarios finales genera las nuevas tareas por hacer. El paradigma ágil dicta que las tareas son organizadas en el backlog, y este a su vez en sprints y versiones. El equipo de desarrollo se encarga de implementar y trabajar en las nuevas características, y las va enviando al repositorio del proyecto a medida que se van desarrollando. En este punto, el paradigma da paso a DevOps, en donde este continúa con el proceso: el código enviado al repositorio es probado y evaluado para determinar su calidad y que no vaya a dañar ningún otro componente. Las pruebas son automáticas y la retroalimentación es inmediata tanto para el equipo de desarrollo como para el equipo de infraestructura. Dependiendo de la estructura del repositorio, si el código liberado es final, el repositorio lo libera al público general y luego es monitorizado, además de ofrecer vías para que el usuario final entregue de nuevo su retroalimentación, la cual alimenta el backlog de los desarrolladores y continúa así con otro nuevo ciclo.

Una buena integración del paradigma ágil y DevOps comprende al menos seis puntos:

  1. Desarrollo y planeación usando alguna metodología como XP, Kanban o Scrum.
  2. Organización del trabajo usando alguna práctica como backlogs, TDD, o propias de la metodologías como los pools de Kanban o los sprints de Scrum.
  3. Retroalimentación del trabajo, generalmente usando técnicas de retrospectiva.
  4. Integración continua.
  5. Pruebas continuas.
  6. Entregas continuas.

Los tres primeros puntos corresponden a la implementación del modelo de desarrollo. Estos puntos no son parte de esta serie, por lo que solo trataré lo necesario.

Los últimos tres puntos es el tema de interés de esta serie, y en las próximas entregas hablaré no solo de ellas, sino también nos encargaremos de montar un entorno automatizado –y real– donde usemos las características básicas de DevOps.

CONTINUARÁ…

En la próxima entrega montaremos un entorno apto para integración y automatización desde cero, usando Debian, Gitlab y Docker.


Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

%d