Windup: plataforma de análisis y ayuda para la migración de aplicaciones en entornos Jboss

A la hora de migrar una aplicación desarrollada en Java a las versiones más actuales de servidores de aplicaciones Jboss AS7/EAP 6 debemos tener en cuenta dos aspectos a analizar:

  • La aplicación en sí, para cuyo análisis utilizaremos Windup.
  • El servidor de aplicaciones Jboss en el que está desplegada en este momento. Para este análisis se utilizan herramientas como WindRide de la que hablaré en otro artículo.

Análisis de la aplicación: Windup

Windup es una herramienta diseñada para ayudar en el proceso de migración de aplicaciones Java a arquitecturas Jboss modernas, considerando como tal a día de hoy a partir Jboss AS7/EAP6. Para ello Windup realiza un análisis de EJBs, ficheros de configuración XML, librerías… utilizadas por la aplicación. A partir de ese análisis se genera un informe donde figuran los puntos más conflictivos y que posteriomente pueden utilizar desarrolladores y administradores de sistemas para adaptar la aplicación al nuevo entorno de Jboss.

Puede resultar muy útil para:

  • Aplicaciones desarrolladas en Java en otros servidores de aplicaciones como Tomcat, Weblogic, WebSphere Application Server… que se quieran migrar a un servidor Jboss.
  • Aplicaciones desarrolladas en versiones antiguas de Jboss que quieran migrarse a la nueva arquitectura de servidor de versiones iguales o superiores a Jboss AS 7/Jboss EAP 6.

Montando el entorno de análisis

No tiene demasiada complicación, pero podemos montar un entorno que no sólo resulte productivo para análisis presentes sino también para futuros. Tened en cuenta también que windup funciona con una JDK 1.7 o superior.

Vamos a organizar una estructura de directorios tanto para la herramienta como para los informes a los que accederemos a través de un frontal web, por ejemplo Apache.

Creamos el directorio donde se va a alojar windup como tal y un subdirectorio donde pondremos las aplicaciones a analizar.

mkdir -p /opt/windup/apps

Se puede analizar tanto el compilado de una aplicación como su código fuente, por lo que creamos a su vez un subdirectorio para el código de las aplicaciones:

mkdir /opt/windup/apps/sources

También creamos un directorio en el que se van a alojar los informes (reports). Recomendable que resida en el DocumentRoot definido en Apache (para este ejemplo, voy a considerar que el mío es /opt/apache/htdocs):

mkdir /opt/apache/htdocs/reports

Si tenemos más de una aplicación a analizar podemos a su vez organizar una estructura de subdirectorios adecuada:

mkdir /opt/apache/htdocs/reports/app1
mkdir /opt/apache/htdocs/reports/app2
mkdir /opt/apache/htdocs/reports/app3
...

Realizado lo anterior, el siguiente paso es descargar la utilidad y la aplicación de prueba, cosa que podemos hacer aquí. Descomprimimos windup en el directorio que hemos creado específicamente para ella:

cd /opt/windup
unzip windup-distribution-2.2.0.Final-offline.zip

Dejamos la aplicación jee-example-app-1.0.0.ear que hemos descargado en el directorio /opt/windup/apps. Las fuentes también podemos descargarlas y dejarlas en /opt/windup/apps/sources.

Generando un informe de migración con windup

El script para ejecutar windup lo encontramos en el directorio bin:

/opt/windup/windup-distribution-2.2.0.Final/bin/windup

Como apunte, en ese script podéis definir la variable JAVA_HOME para que la coja localmente al arrancar. Esto es especialmente útil si tenemos más de una JDK en uso en el servidor.

Lanzamos el script:

cd /opt/windup/windup-distribution-2.2.0.Final/bin/
./windup

Si todo ha ido bien aparecerá el prompt correspondiente:

Prompt de Windup

Prompt de Windup

En este prompt ya podemos lanzar las órdenes correspondientes para realizar el análisis de la aplicación, tanto si está compilada como directamente del código fuente. En ambos casos hay que especificar siempre el path absoluto del origen (aplicación a analizar) y el destino (el directorio de reports):

  • Aplicación compilada: si disponemos del .ear, .war, etc…
    windup-migrate-app --input /opt/windup/apps/jee-example-app-1.0.0.ear --output /opt/apache/htdocs/reports/app1/
    
  • Código fuente: analizamos directamente el código de la aplicación.
    windup-migrate-app --input /opt/windup/apps/sources/jee-migration-example-app-master --output /opt/apache/htdocs/reports/app1/
    

Ya hayamos elegido una opción u otra para sacar el informe, posteriormente accederemos a través de nuestro navegador web. Suponiendo que el servidor tuviera IP 192.168.2.120 lo encontraríamos en http://192.168.2.120/reports/app1. Veremos el informe tal que:

Informe de ejemplo

Informe de ejemplo

Más información sobre opciones de uso la tenéis en la correspondiente sección de su wiki así como una guía que nos puede ayudar a la hora de leer el informe de migración. Recordar también que Windup es un proyecto abierto a colaboración externa.