Articulo de referencia

Integración continua multietapa

La integración continua multietapa es una técnica de desarrollo de software destinada a lograr una actividad de desarrollo paralelo altamente integrada, al tiempo que reduce el ...

La integración continua multietapa es una técnica de desarrollo de software destinada a lograr una actividad de desarrollo paralelo altamente integrada, al tiempo que reduce el alcance de los problemas de integración. [ 1 ]

Teoría

La integración continua multietapa aprovecha un patrón unificador básico del desarrollo de software: el software avanza por etapas, desde un estado de inmadurez hasta un estado de madurez, y el trabajo se divide en unidades lógicas ejecutadas por equipos interdependientes que integran las diferentes partes a lo largo del tiempo. Lo que varía de una empresa a otra es el número de etapas, el número y el tamaño de los equipos, y la estructura de las interdependencias entre ellos.

La integración continua multietapa es una ampliación de la integración continua y presupone que ya se siguen las prácticas recomendadas.

Cuanto más grande y/o complejo sea el proyecto, mayor será la probabilidad de que se vuelva inestable. Las alertas y las compilaciones fallidas aumentan a medida que el proyecto crece. El progreso disminuye y la rama principal se vuelve cada vez más inestable. El riesgo de fallo de compilación aumenta exponencialmente a medida que aumenta el número y la ubicación de los desarrolladores. [ 2 ]

Cada desarrollador trabaja en su propia tarea. A medida que realizan cambios, se lleva a cabo la integración continua en la rama de ese equipo. Si la integración falla, el desarrollador (posiblemente con la ayuda de sus compañeros) corrige la rama. Cuando surge un problema, solo se ve afectado ese equipo, no todo el proyecto de desarrollo. Esto es similar a cómo funciona la parada de la línea de producción en una planta de producción ajustada moderna . Si alguien en la línea tira del cordón de parada, solo afecta a un segmento de la línea, no a toda.

Es importante destacar que en los últimos años el modelo de ramas por "tema" o "característica" ha ganado popularidad frente al modelo de ramas basado en equipos. Véase, por ejemplo, el popular modelo de ramificación Git-Flow [ 3 ].

Con frecuencia, el equipo decide pasar a la segunda fase: la integración con la rama principal. En esta fase, el equipo realiza las mismas tareas que un desarrollador individual en el desarrollo de la rama principal. La rama del equipo debe tener todos los cambios de la rama principal integrados (el equivalente a una actualización del espacio de trabajo), debe haber una compilación exitosa y todas las pruebas deben pasar. La integración con la rama principal será más sencilla de lo habitual, ya que solo contendrá funcionalidades preintegradas, no funcionalidades en proceso. A continuación, los cambios del equipo se integran en la rama principal, lo que activa un ciclo de compilación y pruebas en la rama principal. Si todo sale bien, el equipo regresa a la primera fase, donde cada desarrollador trabaja en sus propias tareas. De lo contrario, el equipo se encarga de que la rama principal vuelva a funcionar, como si fuera un desarrollador individual trabajando en ella.

Los cambios se propagan lo más rápido posible, deteniéndose solo cuando surge un problema. Idealmente, los cambios llegan al área de integración principal con la misma frecuencia que durante el desarrollo principal. La diferencia radica en que menos problemas llegan hasta el área de integración principal. La integración continua multietapa permite un alto grado de integración en paralelo, reduciendo considerablemente el alcance de los problemas de integración. [ 4 ]

Para la integración continua en varias etapas, cada equipo debe tener su propia rama.

Ventajas

La integración continua multietapa tiene muchas ventajas:

  • Cuando fallan las pruebas unitarias o se descubre un error, los desarrolladores pueden revertir el código a un estado libre de errores, sin perder tiempo depurándolo ;
  • Los problemas de integración se detectan y corrigen continuamente, sin pausas de última hora antes de las fechas de lanzamiento;
  • Alerta temprana de código defectuoso o incompatible;
  • alerta temprana de cambios contradictorios;
  • Pruebas unitarias inmediatas de todos los cambios;
  • Disponibilidad constante de una versión "actual" para fines de prueba, demostración o lanzamiento;
  • El impacto inmediato de incorporar código incompleto o defectuoso actúa como un incentivo para que los desarrolladores aprendan a trabajar de forma más incremental con ciclos de retroalimentación más cortos.

Herramientas

Entre las herramientas que admiten la integración continua en múltiples etapas se incluyen:

Véase también

Referencias

  1. Integración continua multietapa Fecha de acceso: 25/02/2009, Poole, Damon, 02/12/2008 Dr. Dobb's, Publicado por TechWeb
  2. Integración avanzada de múltiples etapas , fecha de acceso 19/03/2009, Poole, Damon, 17/01/2009 Reflexiones sobre el desarrollo ágil
  3. "Un modelo de ramificación de Git exitoso" .
  4. Integración continua a gran escala , Poole, Damon, 19 de enero de 2009, CMCrossroads, publicado por CMC Media
  5. 1 2 AccuRev y Electric Cloud se asocian para impulsar la integración continua multietapa y las mejores prácticas ágiles escalables , fecha de acceso 19/03/2009 Archivado el 20/07/2008 en Wayback Machine
  6. Guía de construcción sin complicaciones: Transmisiones en equipo
  7. "Jazz.net" . Jazz.net .