¿Qué significa Integración Continua?

La integración continua es una práctica de desarrollo de software donde los miembros de un equipo integran su trabajo frecuentemente, lo que conduce a múltiples integraciones por día. Cada integración es verificada por build automatizado (incluyendo los test) para detectar los errores de integración tan rápido como sea posible.

Así que, es importante destacar 2 detalles sobre la integración continua:

  • Se lleva a cabo por parte de todo el equipo.
  • Se verifica con un build automatizado.

La integración continua es una de las claves iniciales de DevOps, aportando las bases para que los proyectos se construyan de forma ágil manteniendo la calidad en el software.

¿Cuáles son sus beneficios para nuestro approach a DevOps?

Reducimos la complejidad integrando continuamente.

En desarrollos en cascada (siguen habiendo) es complicado realizar todas las tareas de empaquetado y mantenimiento de librerías, plugins, etc., ya que, este tipo de proyectos difiere en gran medida su resultado final con el que había planificado, debido sobre todo a la cantidad de tiempo que hay desde la fase de planificación hasta la puesta de producción.

Y cuando estos proyectos crecen, esas tareas de mantenimiento y actualización necesarias requieren en exceso de revisiones manuales en las que la falta de registro y documentación (porque el crecimiento del proyecto impedía cumplir con los plazos, y es lo primero en lo que se redujo).

Por lo tanto, cuando se automatizan las tareas de construcción del software, y se trabajan con incrementos menores (iteraciones) es más fácil y rápido mantener los requisitos que permiten mantener su calidad.

Los 7 desperdicios del desarrollo de software

  1. Espera: Los retrasos en el inicio de un proyecto, los retrasos en la dotación de personal, los retrasos debido a la documentación de requisitos excesivos, los retrasos en las revisiones y aprobaciones, los retrasos en las pruebas y los retrasos en el despliegue son un desperdicio.
  2. Funcionalidad extra: Si el desarrollo no es necesario ahora, incluirlo en el alcance del proyecto es un desperdicio.
  3. Trabajo hecho a medias: Significa ”Trabajo en Progreso” y no se podrá valorar hasta que no esté terminado. Demasiados ”Trabajo hecho a medias” son un problema.
  4. Defectos: La cantidad de desperdicios causado por un defecto es el producto del impacto del defecto y el tiempo que no se detecta. La forma de reducir el impacto de los defectos es encontrarlos tan pronto como ocurran. La forma de reducir el desperdicio debido a defectos es realizar una prueba de inmediato, integrar a menudo y liberar a la producción lo antes posible.
  5. Movimiento: El movimiento de personas, de documentos y artefactos genera una gran fuente de desperdicio.
  6. Cambio de tarea: Asignar personas a múltiples proyectos es una fuente de desperdicio. Pertenecer a múltiples equipos generalmente causa más interrupciones y, por lo tanto, más cambios de tareas.
  7. Proceso extra: Si debe producir documentos que agreguen poco valor para el cliente, hay tres reglas para recordad: Mantenlo breve. Mantenlo a alto nivel, Hacerlo fuera de línea.

Reducción de errores

Otro de los aspectos que muestra la definición de integración continua, es que se realizan las pruebas durante su construcción.

Y si además tenemos en cuenta, que estas pruebas no dependen tan en gran medida de factores humanos, se pueden realizar más rápido y con resultados más fiables.

También está fuertemente relacionado con la reducción del tiempo de las interacciones, por lo que cuanto menor sea su duración, más fácil será localizar estos errores, y por lo tanto resolverlos.

Facilita el despliegue de DEV, STG, PRD

A pesa de la cantidad de nuevas funciones que puedes añadir al producto gracias a la integración continua, el despliegue será posteriormente mucho más rápido y fácil. Esto es debido a que ya has validado que las novedades que se van a integrar cuentan con lo necesario y funcionan correctamente.

Entregar más rápido

Gracias a la automatización de tareas como descargar código fuente, construir y testear, los desarrolladores pueden enforcarse en realizar las nuevas funcionalidades que los usuarios demandan.