Propuesta de proyecto colaborativo: GXWiki con balanceo de carga sin "Server Affinity"

Estoy buscando intersados que quieran participar en un proyecto colaborativo con GeneXus.

El objetivo primario del proyecto, seria crear una versión de GXWiki que permitiera funcionar instalándolo en varios nodos sin tener que configurar la afinidad por servidores.

El segundo objetivo es documentar que cosas impiden el tener aplicaciones GeneXus que funcionen sin afinidad, y para cada una de ellas proponer soluciones.

Que es "Server Affinity" y por que no es bueno tenerlo?

Tener una aplicación configurada con "Server affinity" significa que luego que un servidor atiende un pedido (request) de la aplicación, todos los pedidos sucesivos de dicho cliente, van a ser atendidos por el mismo servidor. Para aplicaciones de pocos usuarios y pocos nodos, esto generalmente no es un problema, pero si lo es para aplicaciones de muchos usuarios y/o proyectos que varios servidores en la nube.

Que inconvenientes tiene configurar el "Server Affinity"?

Como luego que un servidor atiende a un cliente, lo sigue atendiendo hasta que este finaliza la sesion, puede pasar que la carga quede muy mal balanceada entre los diferentes nodos. Si un nodo con mucha carga tiene problemas, el balanceador no puede pasar los pedidos de la aplicación a un nodo mas "libre" y por lo tanto la aplicación puede mostrar problemas, a pesar de tener nodos que podrían atender en forma correcta a los usuarios conectados.

Un ejemplo claro de esto, es cuando se genera una planilla excel y la misma se graba en disco local del server. Esta planilla, va a quedar en un directorio del tipo c:\Temp\PublicTempStorage o algo por el estilo. Luego voy a tener otro request que haga el link a dicha planilla para hacer la bajada desde el server al cliente.
Con afinidad en el servidor, los dos request van a ser en el mismo server.
Sin afinidad, se puede generar en un server, y luego intentar hacer el link a otro server, con lo cual no se encuentra la planilla en el disco local, pues se grabo a otro servidor.
Posibles soluciones, son tener grabar en un repositorio centralizado local, grabar en la nube, lograr hacer todo en solo request, etc.
No son problemas demasiados complejos, pero hay varios por resolver.

Algunos de los problemas a resolver serian:
* Manejo de Webssion (como configurar en C# y Java los servidores para tener sesiones compartidas)
* Blobs
* Full Text Search del wiki
* Upload de archivos
* Exportar a PDF

Porque es importarte este proyecto?

En el futuro, nuestras aplicaciones van a correr cada vez mas en los diferentes proveedores de plataformas, y es muy bueno para las mismas que no dependan de un nodo solo para funcionar.
El problema planteado, puede parecer que solo afecta a aplicaciones con muchos usuarios, pero es conveniente resolverlo de forma bastante general para que todos nos veamos beneficiados.

GeneXus viene mejorando desde hace tiempo la forma en que se generan las versiones para que sean mas fáciles de configurar con balanceo de carga, y pienso que este proyecto podría ayudar a coordinar entre mas personas que estén trabajando en el tema.

Las aplicaciones dejaran de ser tan monoliticas como las de ahora, a tener que consumir mas servicios externos y centralizados. Algunos de los que ya necesitamos son de Cache, de Indice de textos, de Almacenamiento, de Sesiones, de Autenticacion/Autorizacion, de Impresion, etc. Todos estos servicios nos van a traer soluciones y nuevos desafios.

Si alguien está interesado, puede poner un comentario en el post o mandarme un mail a ealmeida en @concepto.com.uy y vemos como nos organizamos.




Comentarios

  1. Me interesa participar! Estoy a las órdenes! Abrazo

    ResponderBorrar
    Respuestas
    1. Gerry :
      Pasame tu mail para ir armando una lista de distribucion del proyecto.

      Borrar
  2. Buen día me interesa participar. En lo que se pueda aportar, estaré. Cordial saludo!

    ResponderBorrar

Publicar un comentario

1) Lee el post
2) Poné tu opinión sobre el mismo.
Todos los comentarios serán leidos y la mayoría son publicados.

Entradas más populares de este blog

Aplicación monolítica o distribuida?

La nefasta influencia del golero de Cacho Bochinche en el fútbol uruguayo

Funcionalidades de GeneXus que vale la pena conocer: DATE Constants.