septiembre 8, 2010 Uncategorized

Publicando una aplicación web en una plataforma de cloud computing (Stax)

En el siguiente artículo voy a detallar los pasos necesarios para desplegar en la nube una aplicación desarrollada con Grails. La aplicación es un sencillo gestor de encuestas que permite la creación y el borrado de las mismas, y que muestra al usuario un listado de todas las encuestas disponibles en el sistema. El usuario tendrá la posibilidad de votar en cualquiera de las encuestas existentes, y para poder crear nuevas encuestas el usuario tendrá que disponer de privilegios, accediendo al sistema con el usuario admin y el password monteagudo.

Os dejo a continuación el código fuente y la URL de la aplicación publica en la plataforma de cloud computing de Stax:

Código Fuente: encuestas

URL de la aplicación: http://encuestas.jlmonteagudo.staxapps.net/

Grails y la aplicación Gestión de Encuestas

En un principio mi idea era explicar en el artículo los pasos realizados para desarrollar la aplicación, pero, como asumo que cualquiera que tenga interés en la lectura de este artículo tiene conocimientos sobre cómo desarrollar una aplicación en Grails, me voy a ahorrar la explicación y me voy a centrar más en cómo desplegar una aplicación web en la nube. En cualquier caso, os dejo el código fuente de la aplicación, así cualquier persona que quiera probarla o quiera ver el código tiene la posibilidad de hacerlo.

Sin embargo, antes de empezar con el despliegue de la aplicación, me gustaría comentar algunos aspectos de Grails en general, y de la aplicación en particular.

Quiero aprovechar este artículo para destacar que Grails es una herramienta que permite mejorar notablemente la productividad de los desarrolladores. Esta es una característica muy importante, porque el éxito o el fracaso de un proyecto de desarrollo de software puede estar condicionado en gran medida por este factor, entre otros.

Además, Grails ofrece un extenso ecosistema de plugins que facilitan enormemente la integración de Grails con otras APIs o herramientas. En el caso concreto de la aplicación “gestión de encuestas”, durante su desarrollo he necesitado de una serie de funcionalidades que ya estaban implementadas en forma de plugins en Grails, por lo que, en este sentido, el desarrollo con Grails y su amplia gama de plugins me han ahorrado un tiempo considerable de desarrollo.

A continuación comento brevemente los plugins que he utilizado para el desarrollo de la aplicación “gestión de encuestas”:

  • Webflow:  webflow inicialmente formaba parte del core de Grails, pero a partir de la versión 1.2 se extrajo en forma de plugin, por lo que si quieres utilizar “conversaciones” dentro de tu aplicación tendrás que instalarlo. Este plugin nos permite crear flujos, donde se almacenan estados de la aplicación y en función de las entradas del usuario el programa pasará de un estado a otro.En “gestión de encuestas” se utiliza este plugin para crear la encuesta. De este modo, la aplicación permite ir añadiendo opciones a la nueva encuesta, opciones que ser irán almacenando en el ámbito del flujo, y que sólo se almacenarán en la base de datos cuando el usuario decida que no quiere agregar más opciones y que quiere grabar la encuesta.
  • Google Visualization: Google Visualization permite la elaboración de gráficos a partir de los datos proporcionados por una fuente de datos. Este plugin nos facilita enormemente la representación de la información en forma de gráficos, ya que simplemente pasando al control nuestra información en forma de lista, obtendremos la visualización de la lista en el tipo de gráfico que decidamos.
  • Shiro: Shiro es un framework que permite gestionar de forma sencilla la seguridad de una aplicación. Podemos comenzar a utilizar fácil y rápidamente Shiro instalando el plugin e invocando el comando grails quick-start. A pesar de su facilidad, Shiro nos proporciona gran flexibilidad que nos permite configurar la seguridad en base a las necesidades de la aplicación.

Proveedores de cloud computing

Tenemos distintos proveedores de cloud computing a través de los cuales podemos desplegar nuestras aplicaciones en la nube. En un principio, mi intención fue desplegarla en el servidor Google App Engine, pero por problemas con librerías utilizadas por el plugin webflow, no he podido instalar la aplicación con este proveedor. Un factor a tener en cuenta es que, si queremos que nuestra aplicación se ejecute en Google App Engine, vamos a tener que convertir nuestro modelo de datos a JPA, ya que Google sólo permite trabajar con este sistema de persistencia y con JDO.

Mi segunda opción era desplegar la aplicación con la solución de SpringSource Cloud Foundry. Actualmente este servicio lo ofertan en modo Beta, siendo gratuito el servicio en este modo. Al ser una solución perteneciente a SpringSource, imagino que el despliegue de aplicaciones basadas en el framework Spring estará bastante depurado, con lo que los problemas con esta plataforma deberían de ser mínimos. Para obtener acceso a este servicio hay que realizar una solicitud, pero ha pasado más de una semana desde que realicé la solicitud y lamentablemente ésta todavía no la he recibido. Updated: Mientras escribo este artículo he recibido la confirmación de Cloud Foundry que me permite registrarme para utilizar sus servicios. Próximamente publicaré la aplicación “gestión de encuestas” en Cloud Foundry y escrbiré un post acerca del proceso de publicación en esta plataforma.

Otra solución que me ofrecía el despliegue de la aplicación de forma gratuita (aunque en fase beta) es Stax, cuya infraestructura trabaja sobre el sistema Amazon EC2. Desplegar la aplicación con este proveedor no supone ninguna dificultad, aunque si nuestra cuenta es Beta, la aplicación se desactivará automáticamente entre 2 y 4 horas a lo largo del día. Posteriormente se volverá a activar de forma automática.

Despliegue de la aplicación con el proveedor Stax

El primer paso que tenemos que realizar es crearnos una cuenta a través de la web de Stax. El proceso es muy sencillo, y en cuestión de minutos tendremos acceso a la consola de administración de nuestra cuenta. La consola de administración también es extremadamente sencilla, y a través de ésta tendremos que crear una base de datos y una aplicación. Crear una aplicación tan sólo consiste en asignarle un nombre, y seleccionar el tipo de aplicación, que en nuestro caso es “Basic Servlet and JSP”.

A continuación tenemos que descargarnos e instalar el SDK de Stax. El proceso de instalación del SDK puede consultarse en la siguiente URL: http://wiki.stax.net/w/index.php/SDK, aunque básicamanente se trata de descomprimir el SDK en el directorio que deseemos. Conviene tener en cuenta crear una nueva variable de entorno llamada STAX_HOME que apunte al directorio en el que se ha instalado el SDK, así como agregar al PATH la variable STAX_HOME. En un principio el SDK simplemente lo utilizaremos para, mediante la ejecución de un comando, publicar la aplicación en Stax.

El siguiente paso que tendremos que realizar es configurar nuestra aplicación Grails para que acceda a la base de datos que hemos creado previamente a través de la consola. Para acceder a la base de datos vamos a utilizar un driver proporcionado por Stax, por lo que es necesario copiar el driver (podemos encontrarlo en la siguiente ubicación: STAX_HOME/lib/ stax-appserver-1.0.20100601-SNAPSHOT.jar) en el directorio lib de nuestra aplicación Grails. A continuación tendremos que modificar el fichero DataSource.groovy para configurar la conexión de la base de datos de producción:

Tendrás que reemplazar los valores de STAX_DB-NAME, STAX_DB_USER y STAX_DB_PASS por los utilizados a la hora de crear la base de datos a través de la consola.

Finalmente, sólo nos queda publicar la aplicación. En primer lugar tendremos que generar el fichero war de nuestra aplicación mediante la ejecución del siguiente comando: grails war. Y por último, para desplegar la aplicación en Stax ejecutaremos el siguiente comando: stax app:deploy -a STAX_APPID [PATH_TO_WAR_FILE] . Hay que tener encuenta que STAX_APPID es el nombre de la aplicación que hemos creado con la consola, pero hay que anteponerle el nombre de usuario con el que te has registrado en Stax. Así, en mi caso, el valor de STAX_APPID corresponde a jlmonteagudo/encuestas.

Con estos simples pasos ya tienes tu aplicación Grails funcionando en una plataforma de cloud computing. Te recuerdo que si tu cuenta con Stax es Beta, tu aplicación se desactivará una vez al día durante unas horas. Sin embargo, creo que la plataforma de Stax es muy útil si lo que quieres es testear tu aplicación con en una plataforma de cloud computing.

  1. […] jlmonteagudo.com Java, Desarrollo de Software, Metodologías y más « Publicando una aplicación web en una plataforma de cloud computing (Stax) […]

  2. daniel dice:

    muchas gracias por compartir el codigo no sabia de cloudfoundry DTB

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Back to top