Web, Colas de Mensajerí­a y Experiencia de Usuario

Estrenando en el blog el mundo de las Colas de Mensajerí­a, y la categorí­a recién inaugurada a tal efecto, hoy vamos a hablar cómo se está explotando en la actualidad las capacidades que ofrecen estos sistemas en entornos web.
A priori, y conociéndo íºnicamente las caracterí­sticas básicas de funcionamiento de las aplicaciones cliente-servidor web y los sistemas de colas de mensajerí­a, resulta de extrañar que pueda sacarse algíºn tipo de partido combinándolas, ya que:

  • La relación entre un cliente web y el servidor es sí­ncrona y uni-direccional. El cliente solicita la comunicación con el servidor, quedando a la espera de respuesta antes de poder seguir el hilo de ejecución, de forma, insisto, totalmente sí­ncrona.
  • En cambio un sistema de gestión de colas es en esencia así­ncrono, ya que, a grandes rasgos, consiste en un punto de entrada que va almacenando peticiones en un determinado órden, y que garantiza que las peticiones van a llegar al destino, pero por defecto no garantiza cuándo. En cuanto la petición ha sido procesada, la respuesta se asocia a un punto de salida, el cual la aplicación llamante debe consultar para conocer el resultado del procesamiento.

Entonces, si el trabajo en web es sí­ncrono, y los sistemas de colas de mensajerí­a así­ncronos, ¿como podemos obtener algíºn tipo de beneficio? Paso a enumerar escenarios:

  1. Se debe realizar un cálculo que requiere de tiempos no manejables en entornos web de manera sí­ncrona (más de 1 minuto se podrí­a considerar como inmanejable).
  2. La petición que se recibe en el servidor sólo es ejecutable en algunas ventanas de tiempo.
  3. No es necesaria la notificación de ejecución completa al usuario una vez lanzado un proceso, por lo que podemos gestionar internamente cuándo lanzararemos el proceso demandando para optimizar así­ el consumo de cpu y memoria.

Se pueden encontrar muchos ejemplos de estos usos por ejemplo en redes sociales como Facebook, donde en muchas ocasiones se proponen enví­os masivos de notificaciones, invitaciones y noticias a un grupo muy grande de usuarios. Una vez realizada la petición, esta es encolada y ejecutada a posteriori.El usuario no tiene necesidad de conocer a ciencia cierta que la petición se ha ejecutado en el momento, se conformo en saber que los avisos, llegarán. Lo mismo ocurre con otros sistemas muy habituales como son los enví­os de SMS a través de teléfono móvil.
La ventaja y moraleja del artí­culo respecto a todo esto, es que el uso sistemas basados en colas de mensajerí­a ayudan a maximizar la experiencia de usuario en entornos web, ya que tras una petición que podrí­a resultar en una larga espera sí­ncrona hasta que el servidor haya terminado de ejecutar la petición, esta termina al momento (desde el punto de vista del usuario), y el usuario puede seguir utilizando la aplicación sin problemas. Mientras tanto, por detrás, el gestor de mensajes ha encolado la petición, la cual, en su momento, será ejecutada.
Si vuestro escenario es similar al aquí­ planteado, emplear una solución basada en sistemas de colas de mensajerí­a, podrí­a ser una buena solución de arquitectura.
Saludos.
Miguel.