lunes, 30 de abril de 2012

Ventajas y Desventajas de la integración contínua

Después de unas cuantas experiencias positivas podríamos hacer una larga lista de ventajas, y también después de tener alguna experiencia no tan positiva puedes darte cuenta de algunas piedras que puedes llevar en el zapato y que te hacen algo más complicado el camino.

Empezando por las desventajas:
  • Cultura de la organización, sin ánimo de extenderme mucho, construir el caso de uso de la integración contínua en una organización cuyos procedimientos no incluyen pruebas unitarias puede ser algo duro.
  • Tiempo de configuración inicial, en un entorno en el que se diseñan, desarrollan y documentan adecuadamente los casos de prueba, sólo nos queda invertir el tiempo oportuno en la configuración de las herramientas de integración continua. Si no disponemos de pruebas unitarias, es más conveniente empezar por ahi.
  • Buenas pruebas unitarias, cierto que el papel lo soporta todo, pero en ocasiones las pruebas unitarias también. Hacer revisión de código de las pruebas unitarias, o ideas simples como un desarrollador realiza el código y otro las pruebas de ese código te dará resultados sorprendentes. En cierta ocasión recuerdo que para irse pronto a casa los desarrolladores hacían que las pruebas siempre fueran bien (AssertTrue(true)).
  • Costes de hardware, es necesario un conjunto de máquinas que albergarán las diversas herramientas para la integración contínua: repositorio, automatización, entornos, …
  • Costes de personal de QA, además de las máquinas habrá personal que se encargue de la configuración, seguimiento, realización y generación de informes de las pruebas. La ventaja es que cualquiera puede ver el resultado de las pruebas con lo que los propios desarrolladores pueden corregir aquellas partes del código que no sean correctas, o los gestores de proyecto controlar la calidad del producto construido.
Leyendo la sección de desventajas podemos ver un apocalipsis de problemas y costes generados por una nueva metodología, o ver los diferentes escollos que vamos a encontrar en el camino y pensar con antelación la adecuada manera de enfocar la implantación.
Siendo positivos, el vaso normalmente siempre está lleno con diversos porcentajes de líquido y aire sobre el, la integración contínua tiene también unas ventajas que podemos enumerar de la siguiente manera:
  • En caso de que fallen las pruebas unitarias, el desarrollador puede volver a la versión del código sin error y detectar más fácilmente el error. Se evita el problema conocido como infierno de integración, en el que se juntan todos los módulos y se comienzan a depurar los errores. De hecho se van corrigiendo los problemas de integración más continuamente, de ahí el nombre de la metodología.
  • Se detecta pronto la existencia de código incompatible, ya que cada cierto tiempo se toma el código del repositorio y se vuelve a construir cada módulo y se van realizando las pruebas sobre él. Por la misma razón se encuentran cambios en el código que crean conflictos.
  • Continuamente se realizan las pruebas unitarias sobre todos los cambios.
  • Facilidad para realizar pruebas de regresión.
  • Disponibilidad constante de una versión comprobada de la rama de código en la que se está trabajando actualmente, de forma que se puede realizar una demostración, o tener una versión del producto que resuelve ciertos fallos del producto detectados.
  • Los desarrolladores tienen acceso a la información de las pruebas de forma que en caso de fallo pueden reaccionar más rápidamente que esperando a las pruebas de integración, cuando se acaba la fase de desarrollo, o pruebas de aceptación del usuario, a veces meses después del desarrollo.
  • Como gestor, o promotor del proyecto, una de las mejores ventajas es que se pueden generar KPIs del proyecto en desarrollo y se puede vigilar que no se superen ciertos márgenes y así controlar el desarrollo del proyecto en base a datos fiables.

En resumen más ventajas que inconvenientes, aunque cierto es que en una organización en la que la integración continua está consolidada y la cultura de la organización tiene embebida esta metodología. En caso contrario, la recomendación sería ir piano piano, y dejar que la organización se empape de las diversas mejores prácticas, y se engrasen los engranajes. Correr demasiado lleva al fracaso.

1 comentario: