martes, 27 de marzo de 2012

Integración Continua

Hablar del concepto de integración continua sin mencionar en el primer parrafo a Martin Fowler es un poco presuntuoso como poco, Martin ha sido durante años el campeón, como el mismo dice, de la integración continua.

La integración continua consiste en la compilación de los módulos de un proyecto, y la ejecución de las pruebas de dichos módulos de una forma frecuente. 


Compilación


Realizar la compilación de los módulos de un proyecto es algo que podemos hacer manualmente o bien utilizando nuestro entorno de desarrollo favorito, o bien utilizando herramientas como Ant o Maven. 


Ejecución de pruebas


En los post anteriores hemos visto como realizar pruebas de código mediante el empleo de un framework bastante popular como es junit. Vímos también como utilizar Ant para la ejecución de estas pruebas.


Introducción


En proyectos pequeños sabemos realizar tanto la compilación, en los entornos de desarrollo podemos hacerlo automáticamente con cada cambio, como las pruebas.


En proyectos medianos, se complica la situación cuando hay varios módulos y varios desarrolladores trabajando en ellos, ya que la integración entre ellos se complica, y sobretodo los cambios en el código pueden hacer que todo el proyecto deje de cumplir adecuadamente los requisitos. 


Por esto, el planteamiento de la integración continua. Un entorno en el que mediante determinadas mejores prácticas, metodologías y herramientas se llega a solventar la problemática de la integración de los módulos de software, a veces conocida como el infierno de la integración.


Metodologías


No hay metodologías per se que se desarrollen para el concepto de integración continua, sin embargo si hay ciertas metodologías de desarrollo que cohabitan con el concepto de integración continua como la programación extrema, así como desarrollo ágil, y más recientemente scrum.


La metodología de gestión de proyectos waterfall no se adapta bien al concepto de integración continua, siendo la integración continua en el proceso de desarrollo.


Mejores Prácticas


  • Mantener un repositorio de código.
  • Automatizar la construcción.
  • Automatizar las pruebas.
  • Realizar commit al repositorio diariamente.
  • El proyecto se debe poder construir con cada commit, el desarrollador debe ejecutar pruebas en su entorno local antes de hacer el commit.
  • La construcción del proyecto debe ser rápida.
  • Realizar las pruebas en una copia del entorno de producción.
  • Debe ser sencillo obtener los últimos entregables.
  • Cualquiera puede ver los resultados de la última construcción.
  • Automatiza la instalación (deployment).

Herramientas


Existe una amplia variedad de herramientas que nos van a ayudar en la implementación de estas mejores prácticas.
  • Repositorios de código: cvs, svn y git.
  • Gestión de proyecto: maven2.
  • Automatización de la construcción: ant, maven2.
  • Automatización de las pruebas: junit, dbunit, xunit, testng.
  • Automatización de la integración continua: cruisecontrol, hudson.

No hay comentarios:

Publicar un comentario