miércoles, febrero 10, 2010

GlassFish y Tomcat

Tomado de:
http://mx.sun.com/emrkt/innercircle/newsletter/0209/feature-itm.html?cid=e7959f

Si valora el rendimiento, la facilidad de uso y la agilidad de sus aplicaciones, considere detenidamente los detalles


El CEO siempre hace preguntas muy sencillas a la dirección de TI. ¿Por qué se quejan los clientes del nuevo sistema de pedidos en línea? ¿Por qué llevamos ocho meses intentando desplegar ese nuevo servicio Web? ¿Por qué falló esta mañana mi aplicación de informes financieros?

Lo que el CEO no suele preguntar es qué tecnología de servidor de aplicaciones utiliza la empresa. Pero en muchos casos, esa es la pregunta importante, porque hay una relación directa entre el servidor de aplicaciones utilizado por los equipos de desarrollo y el rendimiento y agilidad de las aplicaciones corporativas.

En concreto, la tecnología del contenedor Web utilizado en el servidor de aplicaciones puede ser un factor determinante para la calidad de las aplicaciones y la productividad de los desarrolladores. Con una tecnología de contenedor Web adecuada, los equipos de desarrollo abarcan más trabajo y las aplicaciones se desarrollan en menos tiempo y funcionan mejor. Una elección equivocada puede dar lugar a dolores de cabeza en el presente y en el futuro.

Si su negocio son las aplicaciones, merece la pena examinar detenidamente las entrañas del servidor de aplicaciones y la tecnología del contenedor Web y analizar su impacto en los equipos de desarrollo. En este artículo se comparan dos de las opciones de código abierto más populares: GlassFish y Tomcat.

Dos opciones populares, muchas diferencias importantes
GlassFish es el servidor de aplicaciones de código abierto creado por la comunidad GlassFish, lanzado por Sun en 2005, y que ha demostrado gozar de gran popularidad entre los desarrolladores. Actualmente, existen dos versiones principales: GlassFish v2 y la reciente Glassfish v3 Prelude. Hasta la fecha, se han descargado cerca de 9,000000 de copias de GlassFish v2, con 300,000 productos registrados sólo en 2009. GlassFish v3 Prelude ofrece nuevas características y mejoras. Es una excelente plataforma para desplegar aplicaciones de Internet con Java y lenguajes dinámicos como jRuby.


Mientras que GlassFish es un conjunto de contenedores Java EE, uno de los cuales es un contenedor Web, Tomcat es sólo un contenedor Web. Esta diferencia fundamental se traduce en una serie de ventajas importantes para GlassFish.
El servidor de aplicaciones Tomcat fue promovido por Apache y un grupo que incluía a desarrolladores de Sun y JServ. El código inicial procedía de Sun. Tomcat fue fundamental para la adopción de Java en servidores, se ofrecía con una licencia de código abierto y contribuyó decisivamente a la implantación del software de código abierto en las grandes empresas.

En general, las aplicaciones que funcionan en Tomcat lo harán sin necesidad de cambios en GlassFish. Sin embargo, hay diferencias importantes que afectan al rendimiento, la escalabilidad y la facilidad de uso de las aplicaciones, así como a la productividad de los desarrolladores.

Para comprender estas diferencias, es importante examinar la tecnología del contenedor Web subyacente. El contenedor Web es la parte de un servidor de aplicaciones que se encarga de manejar los servlets, las páginas JavaServer Pages (JSP) y otros componentes del nivel Web.

Mientras que GlassFish es un conjunto de contenedores Java EE, uno de los cuales es un contenedor Web, Tomcat es sólo un contenedor Web. Esta diferencia fundamental se traduce en una serie de ventajas importantes para GlassFish:

Ruta de migración más sencilla. Con GlassFish v2 hay una forma clara y sencilla de aprovechar tecnologías tales como Enterprise Java Beans (EJBs), Java Persistence API (JPA) y Java Message Service (JMS), entre otras. Con Tomcat, estas tecnologías deben agregarse poco a poco, una a una. El desarrollador es responsable de implementar las capacidades y de asegurarse de que todo el conjunto funcione.
Preparado para entornos de clustering con failover. GlassFish v2 ofrece capacidad de clustering y sofisticadas funciones de alta velocidad para que las aplicaciones puedan cumplir los exigentes acuerdos de nivel de servicio (SLA) de tipo empresarial. GlassFish v3 Prelude admite clustering a través de un equilibrador de carga, aunque todavía no tiene un perfil de clustering.
Superioridad en la administración y la supervisión. GlassFish v2 y v3 Prelude permiten la administración centralizada a través de una consola de administración y de una interfaz de línea de comandos (CLI). GlassFish v2 ofrece supervisión Callflow, que permite a un desarrollador de aplicaciones o un administrador de servidores determinar a qué dedica la aplicación la mayor parte de su tiempo. Esta característica también estará disponible en GlassFish v3. Además, otros proveedores pueden ofrecer su software a través de GlassFish Update Center para facilitar la instalación en GlassFish. Con Tomcat, el software nuevo se configura de forma poco sistemática. Update Center también proporciona acceso en primicia a las nuevas versiones de tecnologías tales como EJB 3.1, que permite empaquetar EJB en un WAR en lugar de empaquetar la aplicación en un archivo EAR.
Compatibilidad con lenguajes de script. GlassFish admite, o lo hará en breve, Ruby/JRuby, Python/Jython, Groovy, PHP, JavaScript/Phobos y Scala, entre otros lenguajes.
Lo esencial: diferencias adicionales entre los contenedores Web
Además de las ventajas generales mencionadas, GlassFish se diferencia de Tomcat por las posibilidades que ofrece su contenedor Web. Le ofrecemos algunos ejemplos:

La capacidad de retener sesiones entre distintos despliegues de aplicaciones (v3 Prelude) supone un importante ahorro de tiempo para los desarrolladores que crean aplicaciones Web Java.
GGlassFish v2 y v3 Prelude facilita la reconfiguración dinámica de servidores virtuales y Listeners HTTP sin necesidad de reiniciar el servidor. Con Tomcat, cuando se modifica una fuente de recursos, suele ser necesario reiniciar el servidor de aplicaciones.
En v2 y v3 Prelude, el entorno Grizzly de alto rendimiento y alta escalabilidad mejora los tiempos de solicitud/respuesta. Las capas inferiores del nivel Web de GlassFish se implementan a través de Grizzly Framework. Este entorno está escrito en Java y aprovecha las APIs NIO (red escalable y E/S de archivos) para proporcionar escalabilidad y es altamente personalizable.
GlassFish v2 y v3 Prelude incluyen varias optimizaciones de rendimiento, como “flattened valve invocation”, una modificación de la arquitectura de válvula que racionaliza la forma de llamar a cada válvula, reduciendo así la profundidad de la pila y mejorando el rendimiento. GlassFish v3 Prelude también admite válvulas de estilo Tomcat.
Sun ha realizado pruebas exhaustivas de escalabilidad para comparar los conectores NIO de Tomcat y Glassfish. Estas pruebas utilizan un servlet simple para minimizar el tiempo dedicado en el contenedor y medir cuántas operaciones por segundo admiten los distintos contenedores para incrementar el número de usuarios. Por ejemplo, con 16,000 usuarios, el benchmark arroja los siguientes resultados:

GLASSFISH TOMCAT
Operaciones/segundo 6988,9 6615,3
Tiempo medio respuesta 0,242 0,358
Tiempo máx. respuesta 1,519 3,693
90% tiempo respuesta 0,6 0,75

Consiga todos los detalles y tome la decisión adecuada
La selección de un servidor de aplicaciones afecta a muchos aspectos de las operaciones de la empresa, no sólo a los equipos de desarrollo. Se trata de una decisión con gran carga estratégica para el negocio. Sun afirma que GlassFish ha demostrado ser una opción superior para los desarrolladores de la nueva generación. Pero le animamos a documentarse en profundidad y a sopesar detenidamente sus alternativas. Encontrará información adicional y estudios comparativos de GlassFish y Tomcat en nuestro informe técnico.

No hay comentarios: