Manteniendo sesiones de usuario con tc Server y Gemfire

August 13, 2013 by
Bacalov, Damian

Que los datos de usuario guardados en sesión estén disponibles en todos nuestros servidores Tomcat nunca fue tan sencillo como implementando instancias de tc Server basadas en el template de Gemfire.

Cuando nuestra aplicación web comienza a crecer en cantidad de usuarios aparece la necesidad de escalar la plataforma en forma horizontal. Ni bien agregamos un segundo servidor aparece el problema de disponibilidad de datos.

La gran mayoría de las aplicaciones web utilizan variables de sesión para almacenar datos de usuario. Dichas variables son locales de cada servidor por lo que sólo estarán disponibles allí donde fueron creadas.

Balanceando carga

Una vez que agregamos servidores con una replica de nuestra aplicación, debemos asegurarnos de dividir la carga entre todos ellos por lo que necesitamos un “load balancer“, y aquí comienzan nuestros dolores de cabeza ya que un usuario puede comenzar su experiencia en un servidor y terminarla en otro diferente.

Soluciones comunes

Las tres soluciones más conocidas para este problema son:

  1. Configurar los “balanceadores de carga” para que recuerde a cual servidor envió a cada usuario de modo que las siguientes peticiones sean dirigidas al mismo servidor. El problema de esta solución es que si un servidor deja de estar disponible, todos los usuarios que estaban navegando en él pierden sus datos.
  2. Configurar un servidor diferente para mantener sesiones en forma externa, normalmente una base de datos. El problema con esta solución es que este servidor no puede escalar horizontalmente junto con la aplicación y además lo que antes era un acceso a memoria, ahora se transforma en un pedido a través de la red (mucho más lento).
  3. Modificar la aplicación para que siempre se pueda “regenerar” la sesión de usuario. Esta solución nos exige reescribir código y dependiendo del desarrollo, puede demandar bastante tiempo.

Tc Server + Gemfire y que la magia comience

Simplemente creando nuevas instancias de tc Server basadas en el template de Gemfire y todo el problema se soluciona. Tan simple y sorprendente como eso. No necesitamos realizar ninguna tarea más.

La siguiente imagen muestra la nueva arquitectura de nuestra aplicación:

p2p

No hace falta configurar el load balancer, no debemos modificar una sola línea de código y la solución escala horizontalmente junto con el resto de la aplicación.

¿Tenés dudas? En este video te mostramos cómo hacerlo.

Como siempre, el equipo de Consultoría de Wetcom está preparado para contestar todas tus preguntas.