El desarrollo en colaboración ya es manejable
Descubra Hudson, un servidor de integración continua (CI) de código abierto que permite a los responsables de TI reducir el tiempo, esfuerzo, coste y riesgo del desarrollo de software en colaboración.
Tras años y años dedicados a diseñar procesos de desarrollo de software en colaboración más racionales y económicos, son muchos los departamentos de TI que sólo han conseguido crear un caos. Sus equipos utilizan una variedad de productos de distintos proveedores, los costes están descontrolados, la calidad dista de ser óptima y los plazos se incumplen con frecuencia.
Resulta sencillo de entender por qué el desarrollo en colaboración es tan difícil. El tamaño y la complejidad de las aplicaciones (y IDEs) sigue aumentando. La frecuencia de las ejecuciones construcción/prueba está incrementando. La diversidad de las herramientas y plataformas de desarrollo se está expandiendo. Pero ¿qué pueden hacer realmente los directores de TI para controlar los costes y los riesgos del desarrollo en colaboración?
En pocas palabras: considerar el uso de Hudson.
Hudson: una forma de integración más inteligente
Hudson empezó como un sencillo servidor de “integración continua” (CI), una herramienta para integrar módulos de software desarrollados por distintas personas o equipos. Diseñado originalmente por Kohsuke Kawaguchi, un ingeniero de software de Sun que quería un servidor CI más fácil de desplegar y utilizar, más flexible, sofisticado y extensible que las alternativas que ofrecía el mercado.
Al igual que otros servidores de CI, Hudson identifica los cambios realizados por el desarrollador en el código fuente, genera y prueba el proyecto, publica los resultados y se comunica con los miembros del equipo de desarrollo para que, por ejemplo, todos ellos puedan ver la estabilidad de la versión, analizar los informes de fallos y recibir notificaciones de fallos de pruebas. Permite una integración más frecuente: varias veces al día en lugar de una vez cada par de días. Y detecta los problemas más rápidamente, permitiendo a los desarrolladores dedicar más tiempo a crear y programar nuevas funciones en lugar de a realizar tareas de prueba y depuración.
Como proyecto de código abierto, Hudson ha evolucionado rápidamente más allá de las capacidades tradicionales de otros servidores de CI. Su arquitectura extensible le permite funcionar como sistema muy versátil para la gestión del ciclo de vida de desarrollo, y mejora la productividad tanto de los equipos de desarrollo como de los desarrolladores individuales.
Hudson se convierte en un miembro más del equipo de desarrollo
En la actualidad, Hudson es casi otro miembro del equipo de desarrollo: un colega muy meticuloso y extremadamente organizado. Se centra en dos tareas:
Generar/probar proyectos de software continuamente. Hudson facilita a los desarrolladores la tarea de integrar cambios en el proyecto y permite a los usuarios obtener una versión actualizada. Comprueba el código fuente de prácticamente cualquier sistema SCM (CVS, Subversion, Perforce, Mercurial, Git, etc.). Genera versiones y realiza pruebas. Inicia automáticamente una nueva prueba siempre que hay una nueva versión disponible. Y genera informes sobre los resultados de las pruebas, además de proporcionar medidas tales como la cobertura de código y análisis estadísticos. Los resultados de las pruebas se obtienen rápidamente (dependiendo de la duración de la prueba). Otros miembros del equipo pueden ver los informes javadoc, analizar los informes de fallos y descargar los artefactos.
Supervisar y comunicar la ejecución de tareas externas, como las tareas cron y procmail, incluso las que se ejecutan en una máquina remota. Hudson mantiene las salidas y permite a los desarrolladores saber fácilmente cuándo algo no funciona bien. Con Hudson, cada fallo de generación da lugar a una notificación por correo electrónico, mensajería instantánea, feed RSS, tray apps o IDE.
Mediante la automatización de procesos, Hudson elimina las tediosas tareas manuales y reduce los tiempos de procesamiento, envía más trabajo a los servidores para maximizar la eficiencia de costes, mejora la comunicación entre los miembros del equipo y dota de mayor transparencia a todo el proceso de desarrollo en colaboración.
Otro aspecto importante es que Hudson protege el proyecto y el equipo frente a errores individuales. La capacidad de Hudson para generar y probar proyectos rápidamente ayuda a los desarrolladores a detectar errores antes de transmitirlos a otros equipos y componentes.
Hudson es sumamente fácil de instalar y utilizar. Combina una gran flexibilidad de configuración con funciones sofisticadas como la generación distribuida de versiones. Admite proyectos Java y no Java y cuenta con el respaldo de la comunidad Hudson, todo un ejército de contribuyentes de código.
De hecho, la comunidad global Hudson crece rápidamente y ya ha escrito más de 160 plug-ins que abarcan desde sistemas de gestión de código fuente (SCM), como CVS, Subversion, Git, Mercurial, Perforce, ClearCase, BitKeeper, StarTeam y Accurev, hasta scripts de generación, como Ant, Maven, shell, Ruby, Groovy y MSBuild. Hudson también es compatible con numerosos wrappers de generación, informes de generación, notificadores de generación, administradores de cluster y otras herramientas.
Hudson produce resultados reales
Hudson está siendo utilizado por cientos de organizaciones y miles de desarrolladores en todo el mundo, en empresas de todo tamaño y en distintos países.
El uso generalizado de Hudson por parte de los equipos de desarrollo del proyecto Glassfish es uno de los ejemplos. El equipo de GlassFish v2.1 migró el proceso de generación de versiones a Hudson durante el ciclo de lanzamiento. Anteriormente, el equipo había utilizado Tinderbox y herramientas de generación de scripts para supervisar la generación de versiones. Era un sistema incómodo, y cuando algo fallaba, los desarrolladores necesitaban dedicar horas a depurar y reiniciar los procesos de generación. Por otra parte, no era posible vincular etiquetas al proceso de generación, por lo que los programadores debían controlar manualmente qué máquina funcionaba con qué sistema operativo.
En algún punto del ciclo de lanzamiento, el ingeniero de generación empezó a experimentar con Hudson y, tras dos o tres días de pruebas, decidió migrar todo el proyecto a Hudson. El mecanismo de notificación de Hudson aceleró drásticamente el ciclo de depuración y mejoró el tiempo de promoción gracias a que los desarrolladores pudieron separar la generación de las pruebas necesarias para certificarla (algo que no resultaba nada fácil con Tinderbox).
El proyecto GlassFish v3 utiliza Hudson desde el principio. Varios módulos basados en OSGi funcionan independientemente en Hudson y alimentan la versión maestra. Aquí puede ver un ejemplo real. Si desea saber cómo otros equipos utilizan Hudson para el desarrollo de software en colaboración, puede leer algunos casos prácticos.
Hudson facilita el desarrollo en colaboración
Al automatizar el proceso de generación y prueba, Hudson ahorra tiempo, reduce errores y riesgos y aporta un mayor nivel de transparencia a los proyectos. Ésta es la razón por la que Hudson se ha convertido en una de las comunidades de código abierto de mayor crecimiento y actividad, con unas 4.000 descargas semanales y más de 20.000 instalaciones activas.
Más de 160 desarrolladores han contribuido a crear más de 137 personas/año de código, y ya se han actualizado más de 300 versiones. De hecho, Hudson ha pasado a ser uno de los servidores de CI de código abierto con mayor aceptación del mundo.
Es una forma mejor de desarrollar software en colaboración, y una forma mejor de reducir el tiempo, esfuerzo, coste y riesgo del proceso de desarrollo de software.
Sun ofrece una versión comercial con soporte de Hudson denominada Sun Continuous Integration Server (SCIS) y disponible dentro de la oferta GlassFish Web Stack. Las versiones Open Source de Hudson se actualizan con frecuencia, mientras que la versión con soporte es estable. Los clientes abonados al soporte de Hudson reciben también los productos de software GlassFish Portfolio, que incluyen GlassFish Enterprise Server y Web Stack, entre otros.
Seminario Web de Hudson: http://blogs.sun.com/theaquarium/entry/reminder_hudson_webinar
Información adicional sobre Hudson en el sitio Web de la comunidad Hudson.

Comentarios
Dejar un comentario Trackback