El concepto de multitenancy se refiere a las Arquitecturas Software en el que una única instancia de un Software es capaz de servir a múltiples organizaciones cliente (Tenants).
El multitenancy contrasta con Arquitecturas multi-instancia donde hay instancias separadas para cada organización cliente mientras que en arquitecturas multitenants se particiona virtualmente sus datos y configuración y cada aplicación cliente trabaja con una instancia virtual customizada.
Es un concepto especialmente importante cuando hablamos de Cloud y de SaaS.
Si relacionamos el concepto multitenancy con el de JVM llegamos a las JVMs multitenancy.
En los últimos años en el mundo Java se han realizado algunas aproximaciones a este concepto, que permitían compartir JVM entre diferentes aplicaciones, lo que consigue en esencia reducción de memoria y tiempo de procesador.
Hay varios proyectos que se quedaron en la cuneta como:
· Java Desktop Engine: http://www.beanizer.org/site/index.php/en/Software/Java-Desktop-Engine-ver-1.0.html
· Nailgun: http://www.martiansoftware.com/nailgun/
El primer proyecto interesante (aunque no usable) es Echidna que permitía correr diferentes procesos dentro de una misma JVM de forma sencilla aunque tenía/tiene grandes limitaciones.
Un proyecto mucho más reciente, interesante y usable es Waratek, del que ya hablamos hace tiempo., y sus productos asociados como ElastiCat que convierte el contenedor Tomcat en una solución multitenant donde las aplicaciones están independizadas y si se cae una no se afecta al resto.
A la espera de ver el soporte multitenant de Java 8 la beta de IBM Java 8 ya lo soporta, para lanzarlo basta usar el parámetro –Xmt:
![]()
Que funciona:
También soporta controlar el uso de recursos de cada tenant a nivel de
· Tiempo de procesador
· Tamaño Heap
· Threads
· File I/O
· Socket I/O:



Deja un comentario