El siguiente artículo trata de un nuevo concepto que ha empezado a hacerse popular para el desarrollo de proyectos, sobre todo los que están basados en metodologías ágiles.
¿Qué es Integración continua o Continuous integration?
Según Martin Fowler, escritor de libro “Continuous integration – Improving software quality and reducing risk”, el concepto de integración continua se define como sigue:
“Es una práctica de software donde los miembros del equipo de trabajo integran su código de manera frecuente, dando así multiples integraciones por día. Donde cada integración forma parte de un Build (Integración, Construcción, Pruebas, Despliegue, entre otras cosas). ”
El proceso normal que se sigue en un esquema de trabajo CI es como sigue:
- Los desarrollares envían sus modificaciones al controlador de versiones (SVN, CVS, etc).
- El Servidor de integración continua monitorea el repositorio buscando cambios y ejecuta automáticamente el build.
- Una vez finalizado el proceso de build (integración, construcción, pruebas y despliegue) el servidor envía a los reponsables un email con el resultado del proceso (feedback del proyecto).
- El servidor realiza el paso 2 continuamente.
Como puede verse el proceso es relativamente simple pero en muchos proyectos no se realiza ésto que es tan elemental y que a la larga mejora el proceso de desarrollo y evita problemas.
Las ventajas de usar este esquema de trabajo:
- Los problemas de integración son detectados rápidamente y pueden ser corregidos con la misma celeridad, no hay porque integrar 1 vez al mes y estar corriendo contra el reloj para detectar problemas.
- Código que rompa el build es detectado automáticamente al tener un feedback automático.
- Las pruebas unitarias corren cada vez que se ejecuta el build lo cual permite que el desarrollador pueda darse cuenta rápidamente de cualquier error en su código.
- Existe un mecanismo de despliegue automatizado donde el código producido puede ir a parar a los distintos servers (development server, testing server, production server).
Algunos CI servers open source que se pueden utilizar son:
- Hudson
- Apache Continuum
- Apache Gump
- Cruise Control (en sus distintas versiones Java, Net, Rubi)
- BuildBot
Algunos CI server pagados que se pueden usar son:
Antartec usa integración continua
Antartec se encuentra en el proceso de implementar un servidor CI para mejorar el proceso de desarrollo de todos nuestros proyectos, para lo cual se realizó la siguiente evaluación:
- Actualmente en Antartec utilizamos la siguiente combinación para el desarrollo Maven y Subversion.
- El Servidor CI en evaluación es Hudson.
- El repositorio de dependencias en evaluación es Hudson ya no es necesario implementar un servidor de dependencias por separado puesto que Hudson ya lo trae incluido.
- Los Servidores de aplicaciones para dev, test, prod dependiendo del tipo de proyecto pueden ser Tomcat, JBoss, Apache, etc.
La arquitectura propuesta
Basado en el trabajo realizado por Henry Carrión, miembro de Antartec, sobre Integración continua la arquitectura planteada es la siguiente:
Resultados a obtener
- Control de cambios
- Monitoreo constante
- Integración de procesos
- Retroalimentación
- Gestión de dependencias
- Proceso de desarrollo en base a Métricas
- Finalmente disminuir el tiempo de desarrollo requerido para cada proyecto
Siendo este último punto el más importante dentro de esquema de trabajo de Antartec.
A manera de conclusión
El concepto de Integración continua es una forma de desarrollo de software que mejora el proceso y puesta en producción del producto desarrollado, mediante la aplicación de herramientas de automatización y mejora continua del proceso.
En Antartec se espera con este sistema mejorar nuestros procesos y tiempos de desarrollo del software producido.

