Una introducción.
Definición, ventajas e inconvenientes.
05/08/2021.
La evolución en el desarrollo de software ha venido marcada por varios factores, entre ellos:
Todos estos factores, han propiciado nuevos enfoques en la arquitectura de software, uno de ellos es el denominado multitenant.
En las siguientes líneas, voy a tratar de definirlo y compararlo con el enfoque tradicional.
Vayan por delante mis disculpas, por las informaciones erróneas o inexactas que pudieran aparecer en el texto.
Este tipo de arquitectura de software, la más utilizada hasta fechas relativamente recientes, consiste en que cada instancia de la aplicación es utilizada por un único cliente a la vez.
En cuanto al almacenamiento de los datos de la aplicación, la opción más sencilla y utilizada, suele ser la de una única base de datos por cliente.
Suele ser la elección natural si la instalación se realiza en casa del cliente (on-premise) o en ordenadores personales.
La característica principal que define la arquitectura multitenant, consiste en que una sola instancia de la aplicación (código en ejecución), es utilizada por varios clientes a la vez (tenants).
En cuanto al almacenamiento y gestión de los datos de la aplicación, existen varios enfoques:
La elección de un enfoque u otro, dependerá de la aplicación en sí y de la infraestructura en la que se aloje, puesto que cada uno de ellos tiene sus ventajas e inconvenientes, como se verá en futuras entregas.
Determinadas aplicaciones desarrolladas según la arquitectura monotenant tradicional, permiten la gestión de más de un cliente, pero nunca a la vez.
Son las típicas aplicaciones multiempresa, que permiten seleccionar aquella en la que queremos trabajar (software de contabilidad, facturación, etc.).
En cuanto al almacenamiento y gestión de los datos, es aplicable lo indicado para la arquitectura multitenant.
En la imagen siguiente, podemos ver las principales diferencias entre la arquitectura monotenant y la multitenant.
Entre las ventajas de las aplicaciones monotenant, podemos encontrar:
Esta arquitectura también tiene inconvenientes, como pueden ser:
Algunas de las ventajas de esta arquitectura son:
Entre las desventajas, cabe citar:
A mi entender, en este tipo de cuestiones, no hay verdades absolutas, ganadores o perdedores, buenos o malos.
Se podría argumentar que algunas de las ventajas enumeradas, tanto de una u otra arquitectura, si se analizan más a fondo o se tienen en cuenta otras consideraciones, puede que no sean tan absolutas. Lo mismo ocurre con los inconvenientes.
Por citar un ejemplo del enfoque multitenant: "despliegue y actualización más simples y rápidos, puesto que solo existe una aplicación a mantener".
Esto es cierto al 100%, si solamente tenemos en cuenta el hecho en sí, obviando otras consideraciones, de no poca importancia:
Evidentemente, existen respuestas a cada uno de estos desafíos, pero todas ellas precisan de planificación y recursos, no siempre disponibles.
Por otra parte, ¿tiene sentido desarrollar una aplicación multitenant a medida, para un único cliente? Obviamente, la respuesta es no.
Además, se observará que las ventajas e inconvenientes citados, lo son desde el punto de vista de la empresa proveedora del software.
Más adelante, trataremos de ver todo este asunto, desde la perspectiva del cliente.
La elección de una arquitectura, en ocasiones depende de factores ajenos a la idoneidad de una u otra en un determinado contexto:
En ocasiones, un enfoque acertado es tomar el camino de enmedio.
Por ejemplo, vamos a desarrollar una aplicación que idealmente utilizarán muchos clientes simultáneamente, pero de momento no hay recursos, ni clientes.
Una posibilidad sería realizar inicialmente una aplicación monotenant, e ir instalándola en servidores virtuales, uno por cada cliente. O en un mismo servidor, proporcionando para cada cliente un subdominio, el código de la aplicación y la base de datos.
En el momento en que la situación lo permitiese, se refactorizarían determinadas partes de la aplicación, con el fin de adoptar un modelo multitenant.
Para realizar la transición de forma no demasiado traumática, podríamos tener en consideración lo siguiente:
En próximas entregas, trataré de profundizar en los elementos más importantes que conforman la arquitectura multitenant.