Por qué aplicar integración continua, el objetivo de los equipos de desarrollo actuales es planificar, codificar, probar y entregar una pieza de software utilizable cada dos o tres semanas. Para conseguirlo, automatizamos buena parte del proceso software mediante la Integración Continua (IC), de manera que el equipo pueda repetir la entrega de código de forma iterativa, pero descargando el trabajo pesado en un servidor de Integración Continua (“CI server”). Así es como conseguimos entregar los grandes proyectos de desarrollo software.
El servidor de Integración Continua automatiza diversos pasos en el ciclo de vida del software. No puede ayudarnos con los requistos de negocio o diseño, pero sí puede encargarse del empaquetado, despliegue, inspección y pruebas software automáticas. Y lo hace de forma incansable, sistemática, robusta y barata.
Al automatizar parte del proceso de producción de software, la Integración Continua contribuye definitivamente a acelerar el tiempo para llegar al mercado (“time-to-market”) en las organizaciones basadas en Tecnologías de la Información (TI).
¿Cuáles son las organizaciones basadas en Tecnologías de la Información? Son aquellos negocios en los que las Tecnologías de la Información son críticas para la operación. Bancos, empresas de paquetería o canales de venta basados en Internet, por ejemplo, están basados en TI. Mejorar sus cañerias TI significa mejorar sus comunicaciones internas, su estrategia de marketing y sus costes de producción. Es decir, son compañías que consiguen ventajas competitivas con el uso de la tecnología, sin que sea excluyente el que vendan o no tecnología.
Gracias al impulso de iniciativas como Agile o eXtreme Programming, entre otras, los servidores de Integración Continua disponibles son numerosos: Bamboo, CruiseControl, Jenkins, Team Foundation Server o Solano por ejemplo.
Sin embargo, aplicar Integración Continua (IC) es un proceso doloroso y exigente que requiere un CAMBIO EN LA CULTURA de construcción de software. Con constancia finalmente conseguiremos reducir los tiempos de empaquetado, aumentar el número de versiones en paralelo y la robustez de las entregas.
Bien, va a doler. Pero , ¿en qué podemos ayudarte?
- En primera instancia toca verificar la Cultura del equipo de desarrollo. Habitualmente es necesario generar un proceso de adaptación, de enriquecimiento, en que se minimice la resistencia al cambio gracias a un enfoque de mejora paulatina, basada en principios Lean.
- Aplicando definición temprana.
- Asegurando los canales de comunicación.
- También trabajaremos en definir los Procesos que permitirán maximizar el rendimiento obtenido:
- Estableciendo las líneas de automatización.
- Determinando las “causas” a controlar.
- Definiendo políticas de ejecución.
- Implementando los Radiadores de información (indicadores de medición).
- Por último, utilizar la suite de Herramientas más adecuada entre las distintas alternativas tecnológicas será nuestra contribución final.
La Integración Continua es un medio, no un fin.
El objetivo sigue siendo maximizar el valor entregado.
Un espacio de reflexión interesante nos lo proporciona la frecuencia. Aunque hablamos de Integración C-o-n-t-i-n-u-a, no se trata de una práctica que fuerce a un proceso de integración diario. La frecuencia es una cuestión que está abierta y que deberá quedar definida conforme a los objetivos que se quieran alcanzar. Por ello, en la Integración Continua, el ritmo lo marcan las relaciones «Causa -> Efecto» a controlar.
No podemos terminar sin recopilar las razones, en forma de beneficios, que motivan la aplicación de esta exigente práctica de la Ingeniería Software:
- Reducción de riesgos tecnológicos gracias a un proceso de construcción predecible, retroalimentado y transparente. Así, por ejemplo, podremos predecir el tiempo de integración dado que es algo que se realiza de forma continua.
- Minimizar las anomalías en el producto final gracias al “feedback” temprano. Al realizar pruebas automáticas frecuentes habilitamos una pronta detección y corrección de anomalías.
- Calidad desde el inicio y adaptación al cambio. Como es posible disponer de un entorno de demostración con cualquier versión de la aplicación, es viable mostrar los últimos cambios de forma frecuente. Así, buscamos la aceptación por parte de los usuarios de las nuevas características añadidas al proyecto y devolvemos información al equipo de trabajo rápidamente.
- Responsabilidad y visibilidad. El ciclo de vida del producto software se vuelve explícito, común, independiente y público. Así, todo el equipo dispone de información precisa sobre el estado real del proyecto, lo que aligera las tareas de seguimiento, fomenta el sentimiento de propiedad colectiva del código y garantiza la transparencia del proceso.
Sin duda, un viaje intenso hacia un mundo maravilloso en el que deleitarnos observando manadas de hermosos unicornios …
… ¿Será posible?
0 comentarios
Trackbacks/Pingbacks