Transformaciones XSL (III): No es oro todo lo que reluce.
Una vez escuche a alguien decir, que todo proyecto informático que se precie de cierta complejidad "tiene gato encerrado", está esperándote y cuando menos te lo esperas .... salta a por ti
Pues bien, el uso de Translets no es una excepción.
El problema
En una situación de producción con elevada concurrencia (el caso aquí descrito se produjo en un entorno real cuando más de 2.000 usuarios estaban conectados de forma simultánea), según de que forma se haga uso de las transformaciones proporcionadas con XALAN se produce un colapso del sistema, que lleva la CPU de las máquinas al 100% de uso y estoy hablando de equipos dimensionados para alcanzar cargas muy superiores, del orden de 10 ~ 20.000 usuarios concurrentes.
Imprimir este artículo
Transformaciones XSL (II): ¿Cuanto más rápidas son ahora?
En la anterior entrega se realizaron una serie de mediciones rápidas que indicaban una importante mejora mediante el uso de Translets. Una vez que la prueba de concepto ha sido superada, el siguiente paso es evaluar el rendimiento de los translets cuando se realizan un gran numero de peticiones concurrentes.
Imprimir este artículo
Transformaciones XSL (I): Rápidas como el rayo
Si estas leyendo este artículo, probablemente ya conozcas lo que es una XSL y como se usan para transformar un XML a otros formatos: HTML, WML, PDF, etc.
En aplicaciones que siguen el diseño de capas, el uso de las transformaciones XSLT proporciona una elegante solución para llevar a cabo la separación entre la capa de Negocio y la capa de Presentación, hasta el punto de que "puedes rehacer totalmente la presentación de una apliacación sin alterar ni lo más mínimo la lógica de negocio.
Si la aplicación que acabas de crear tiene la fortuna de atender a miles de usuarios y/o tratar grandes volumenes de información, a buen seguro te encontraras la desagradable sorpresa de que la CPU de los servidores echa humo y que los tiempos de respuesta dejan mucho que desear: Si lo piensas friamente, las transformaciones XSL no son otra cosa que un lenguaje interpretado y como tal la escalabilidad y el rendimiento no son su punto fuerte.
Pronto te das cuenta de que por mucho que intentes - optimizar los bucles <xsl:for-each>, simplificar las consultas XPATH de los <xsl:value-of select=""> y que ordenar en la XSL usando <xsl:sort> no es buena idea (mejor lo haces en la capa de negocio) - no logras mas allá de un mejora de un 5-10% en el rendimiento de las transformaciones XSLT.
¿Y ahora qué?
.... la solución son los Translets.
Imprimir este artículo