Gestionar Aprenda a aplicar las mejores prácticas y optimizar sus operaciones.

La integración continua revoluciona el desarrollo de software en Redbee

La decisión de utilizar integración continua en redbee redujo un proceso manual de cinco días a sólo 20 minutos.

Se denomina continuous delivery o integración continua a la práctica de realizar despliegues incrementales basados en funcionalidad de lo que los desarrolladores “liberan” y que son validados mediante suites de pruebas automatizadas (quizás manuales) en ambientes parecidos a producción. “Si se asegura cierto nivel de calidad, esa funcionalidad puede ponerse en producción inmediatamente. Este proceso está automatizado casi en su totalidad, minimizando de esta manera errores humanos”, explica Martín Paoletta, CIO de redbee, una firma de consultoría y servicios para ayudar a las empresas a acelerar su proceso de transformación digital.

La integración continua es considerada hoy una filosofía de trabajo básicamente porque todas las prácticas que lo forman están alineadas bajo un mismo tema: el producto siempre está listo para ser liberado. “Esto cambia el paradigma imperante del ciclo de desarrollo-pruebas-despliegue incorporando cambios de todo el equipo a una modalidad en que el software va creciendo a partir de cambios incrementales y siempre está listo para ser puesto en producción a dar valor. Como desarrollador, mi ‘tarea terminada’ ya no es “terminé el desarrollo de la funcionalidad”, sino que está ya está en producción y dando valor al negocio”, especifica Paoletta.

Según explica, un ciclo de entrega continua toma forma cuando el desarrollador implementa la funcionalidad, incluyendo tests unitarios y potencialmente pruebas automatizadas de la interfaz de usuario y envía sus cambios al repositorio de fuentes: “Un servidor de integración continua (CI) detecta que hay cambios de código o configuración, descarga las novedades y realiza un build. El servidor de CI ejecuta tests unitarios. Si la calidad (evaluada en forma de tests unitarios y herramientas de análisis estático de código) está dentro de los parámetros establecidos, CI automáticamente despliega el producto en un ambiente de pruebas automatizadas y ejecuta las mismas. La persona responsable de los despliegues se informa del resultado de la ejecución de las pruebas automatizadas y si ‘son buenos’, ejecuta el despliegue en el ambiente de pruebas manuales”, explica con detalle Paoletta.

Un equipo de pruebas certifica la funcionalidad, concentrándose en la nueva funcionalidad (ya que las pruebas sobre la funcionalidad ya entregada se ejecutaron y fueron exitosas): “Una vez que se considera a la funcionalidad como estable, se desarrolla un test de interfaz de usuario automatizado. El responsable de calidad aprueba el pasaje a producción, que se realiza en forma totalmente automatizada. Podemos ponerlo de otra manera, escribo git push y del otro lado y mediante un proceso lo suficientemente avanzado como para parecer magia, empezamos a vender tickets por internet”, agrega.

Martín Paoletta

Paoletta explica que la integración continua reduce en forma dramática el tiempo de llegada al mercado: “Comparemos un ciclo de desarrollo ágil normal basado en iteraciones de dos o tres semanas que incorporan el trabajo de todo el equipo y por lo tanto un conjunto de cambios grandes que luego debe certificarse por un área de calidad (añadiendo quizás otra iteración durante la cual se prueba y realizan correcciones) contra el desarrollo de una funcionalidad específica que demora un par de días, se valida automáticamente y luego se despliega. El tiempo que demoramos para dar soporte a una oportunidad detectada en el mercado puede ser en algunos caso 10 veces menor”, detalla y agrega que estos parámetros son teniendo en cuenta un modelo de proyecto ágil: “Si encima consideramos ciclos de desarrollo aún más largos, con fases medidas en meses, la diferencia puede ser equivalente a la revolución industrial.”

Hoy el desafío de incorporar integración continua es una carrera en la industria, principalmente por sus valores diferenciales para el negocio. “Los jugadores que lleguen antes son los que muchas veces terminan victoriosos. Hoy día, el continuous delivery, como los microservicios y DevOps son enfoques que apuntan a hacer cambios más chicos y automatizar las pruebas y despliegues, reduciendo de esa manera el tiempo y de paso evitando los problemas (y costos) asociados a que una persona sea quien los haga (el problema que solemos encontrar entre la silla y el teclado)”. En un mercado globalizado en el que se multiplican nuestros potenciales competidores, ser los primeros tiene un valor enorme: “La velocidad de reacción para aprovechar un cambio de condiciones, una oportunidad, es una herramienta importantísima”, aclara Paoletta.  

Desde redbee señalan que el concepto de despliegue y entrega continua se basa en la integración continua (CI), que debe adoptarse como la primera medida. Como ejemplo de las ventajas de aplicar CI, revelan un proyecto grande de siete años atrás donde tenían que reservar cinco días para un engorroso proceso que llamaban despliegue en producción. “Este tiempo (y el dolor asociado) era consistente: un proceso manual con múltiples pasos, idas y vueltas creando recursos, disparando pedidos de cambios en esquemas de bases de datos, etc. La decisión de aplicar CI redujo esto a 20 minutos, mirando el progreso del progreso en una consola de Jenkins (servidor de CI)”, explica.

Implementar CI fue complejo, con muchos errores, pero aprendieron muchísimo en el camino y finalmente llegaron a ese punto. “En nuestra experiencia, este proceso de aprendizaje siempre existe en alguna medida, pero si se toma a CI como un objetivo primordial desde el inicio, las tareas complicadas muchas veces desaparecen porque siempre planeamos en función de nuestro norte (automatizar todo) y las normativas corporativas, en nuestra experiencia hasta el momento, finalmente no son realmente un impedimento insalvable. Lo realmente complejo puede existir, pero la estrategia de dividir y conquistar particionando los problemas nos ha dado muy buenos resultados”.

Por último, el concepto de Continuous Deployment es la evolución de CD y la situación ideal: cada versión que pase la suite de pruebas automatizada se despliega automáticamente: “Esto puede no ser viable para empresas que por regulaciones requieren un responsable que de el ok para la puesta en producción pero es el mejor escenario”, concluye. 

Este artículo se actualizó por última vez en noviembre 2016

Profundice más

Inicie la conversación

Envíenme notificaciones cuando otros miembros comenten sobre este artículo.

Por favor cree un Nombre de usuario para poder comentar.

- ANUNCIOS POR GOOGLE

Close