Integración continua de Agile

Como precursor de DevOps y, por tanto, de la integración, entrega y despliegue continuos (CI/CD), Agile tiene una estrecha relación con estos enfoques. Entender la filosofía en que se basa Agile puede ayudarle a sacar más provecho de la CI/CD al tiempo que implementa un proceso de CI/CD que pone en práctica Agile.

Desafortunadamente, años de marcos de trabajo, estrategias y consultores han difuminado los principios fundamentales de Agile y lo han reducido a un conjunto rígido de reglas. Pero si no se comprenden los principios, es mucho más difícil aplicarlos con eficacia.

Los principios de Agile

Por encima de todo, Agile es una mentalidad, una forma de pensar en el proceso de desarrollo de software.

Agile reconoce que el objetivo es entregar un software que funcione y que estar abierto al cambio y fomentar la colaboración entre las personas es una forma más eficaz de conseguirlo que seguir rígidamente un plan para un conjunto de requisitos contratados.

Los principios establecidos en el manifiesto Agile amplían estos valores y ofrecen técnicas para ponerlos en práctica. Esto incluye la creación de equipos capacitados y colaborativos y la entrega de software funcional en ciclos frecuentes e iterativos, que permiten al equipo responder al cambio.

El razonamiento es sencillo: si se fijan unos requisitos estrictos desde el principio y se sigue rígidamente un plan para cumplirlos, se pierde la flexibilidad para adaptar lo que se está creando a medida que se aprende más y que el contexto y las necesidades de los usuarios evolucionan. El enfoque Agile consiste en tener un objetivo final y elaborar los detalles de cómo alcanzarlo de forma gradual.

Uso de Agile con CI/CD

Estos principios de Agile dieron pie al movimiento DevOps, que a su vez dio lugar a las metodologías CI/CD.

Mientras que el enfoque de Agile, al menos en los primeros días, se centraba en el trabajo del equipo de desarrollo, DevOps amplió el ámbito de aplicación para examinar los procesos posteriores y el trabajo necesario para pasar de la escritura del código a su publicación.

DevOps hace hincapié en la importancia de acabar con los compartimentos estancos y colaborar entre equipos para lograr un objetivo común: hacer llegar a los usuarios un software útil y que funcione. La integración, la entrega y el despliegue continuos son prácticas de DevOps cuyo objetivo es acelerar la entrega de software sin poner en entredicho la calidad.

Al automatizar el mayor número posible de pasos en el proceso, el entorno de integración continua asegura un feedback rápido para acortar el tiempo que se tarda en lanzar el software a los usuarios.

Teniendo en cuenta la historia de Agile y DevOps, probablemente no sea una sorpresa saber que varios de los elementos involucrados en un proceso de compilación también le ayudarán a trabajar al modo Agile. Para empezar, la práctica recomendada de CI de "confirmar pronto y a menudo" le anima a trabajar en pequeñas tandas.

Dividir las características en piezas más pequeñas es esencial para un proceso de compilación y lanzamiento iterativo. Como el objetivo es asegurar que cualquier confirmación pueda progresar a través del flujo de trabajo de CI/CD y, si es posible, lanzarse, cada confirmación debe resultar en algo que funcione. Por lo tanto, la adopción de este enfoque le ayuda a mantenerse centrado en la entrega de un software funcional.

Tanto Agile como DevOps hacen hincapié en el valor de la colaboración y la comunicación. Aunque el enfoque inicial de DevOps era la colaboración entre desarrollo y operaciones, las ventajas pueden ir mucho más allá.

Al incluir entornos de puesta en escena en su proceso de compilación y proporcionar visibilidad de lo que ha cambiado en cada compilación a través de paneles, puede compartir el progreso y solicitar comentarios de otras partes de su organización, como los equipos de marketing, diseño o seguridad.

Una parte esencial de cualquier proceso de CI/CD son las pruebas automatizadas que proporcionan feedback rápido sobre los cambios de código y transmiten confianza en la calidad de la compilación. Ejecutar pruebas automatizadas en cada confirmación es un paso importante para asegurar que se entrega un software que funciona.

La importancia de lanzar el software a los usuarios suele ser una de las prioridades de la agenda Agile, y un proceso de CI/CD es un elemento clave para este principio. La automatización de los pasos del proceso de lanzamiento ha permitido a los equipos acelerar considerablemente sus lanzamientos e implementar cambios diariamente o incluso cada hora, con una frecuencia mucho mayor que la prevista cuando se redactó el manifiesto.

Por último, los ciclos de feedback continuo que forman el núcleo del proceso de CI/CD y permiten la mejora continua, tanto del software que se compila como del proceso que lo permite, también refuerzan el principio Agile de que el equipo debe reflexionar con frecuencia sobre su proceso y ajustarlo en consecuencia. Incorporar y escuchar los bucles de feedback ayudará a establecer el ritmo de desarrollo sostenible por el que aboga el manifiesto.

Crear una organización Agile

Aunque la implementación de un proceso de CI/CD puede fomentar una mentalidad Agile, no es una fórmula máquina, al igual que los diversos marcos y soluciones de Agile que han proliferado desde que se definió Agile.

Dicho esto, algunos de los antipatrones habituales en las metodologías de CI/CD también pueden servir como indicadores de que su organización no es tan Agile como le gustaría.

Un obstáculo frecuente tanto para el funcionamiento de un proceso eficaz de compilación como para la adopción de los principios Agile para un entorno de integración continua es la introducción de varias etapas manuales en el proceso de lanzamiento. Esto puede incluir el cambio de los paneles consultivos, o el requisito de indicar notificaciones de cambio detalladas y evaluaciones de riesgo, antes de que una nueva compilación pueda ser implantada para la producción (o incluso a la puesta en escena).

La intención de estos procedimientos suele ser garantizar una cierta supervisión y control de los lanzamientos. Sin embargo, esto ralentiza significativamente el proceso y hace caso omiso del propósito de un régimen de pruebas automatizado, que debería darle confianza en la compilación.

Demostrar la solidez del proceso de CI/CD mediante métricas puede ayudar a aliviar las preocupaciones. Al mismo tiempo, los paneles y las notificaciones automatizadas pueden reducir una gran cantidad de trabajo manual para mantener a las partes interesadas al tanto de los cambios que se producen a través del proceso.

Otra señal de advertencia habitual es la aparición de solicitudes para ralentizar el proceso y agrupar los cambios en lanzamientos menos frecuentes.

Mientras que agrupar los cambios en actualizaciones semanales o quincenales es apropiado para algunos productos, cualquier periodo menos frecuente significa que se arriesga a perder el beneficio de ver sus cambios en la producción y utilizar ese feedback como información para sus próximos pasos.

Comunicar los fundamentos de las prácticas de integración continua Agile, DevOps y <1">CI/CD y conseguir la participación de todos los niveles de la organización en este proceso ayudará a facilitar la transición.

Uno de los bloqueos subyacentes tanto en CI/CD como en Agile lo provoca la falta de confianza, que hace que los equipos no se sientan capacitados para hacer lo que se necesita. Exigir varios niveles de aprobación para las decisiones o los cambios ralentizará el proceso y socavará las ventajas del feedback rápido.

Un equipo capacitado requiere que sus miembros entreguen un software funcional y que la dirección proporcione a los equipos las herramientas y el entorno adecuados para que puedan hacer su trabajo.

Conclusión

A veces, Agile se presenta de forma errónea como un conjunto de reglas fijas que deben aplicarse de forma específica. Al comprender los fundamentos y adaptar los principios a su organización -al tiempo que vigila los antipatrones- puede promover una mentalidad de integración continua Agile.

La adopción de metodologías de CI/CD le ayudará a poner en práctica los valores de Agile y a darse cuenta de las ventajas de los ciclos de desarrollo iterativos y los lanzamientos frecuentes.