La tenencia múltiple de software es una arquitectura de software en la que una única instancia de software se ejecuta en un servidor y sirve a varios inquilinos. Los sistemas diseñados de tal manera son "compartidos" (en lugar de "dedicados" o "aislados"). Un inquilino es un grupo de usuarios que comparten un acceso común con privilegios específicos a la instancia de software. Con una arquitectura de múltiples inquilinos , una aplicación de software está diseñada para proporcionar a cada inquilino una parte dedicada de la instancia, incluidos sus datos, configuración, administración de usuarios, funcionalidad individual de inquilino y propiedades no funcionales . La multiplicidad de inquilinos contrasta con las arquitecturas de instancias múltiples, donde las instancias de software separadas operan en nombre de diferentes inquilinos.[1]
Algunos comentaristas consideran la tenencia múltiple como una característica importante de la computación en nube . [2] [3]
Las aplicaciones multiusuario han evolucionado a partir de tres tipos de servicios y combinan algunas características de ellos:
En un entorno multiusuario, varios clientes comparten la misma aplicación, que se ejecuta en el mismo sistema operativo, en el mismo hardware y con el mismo mecanismo de almacenamiento de datos. La distinción entre los clientes se logra durante el diseño de la aplicación, por lo que los clientes no comparten ni ven los datos de los demás. Compare esto con la virtualización en la que los componentes se transforman, lo que permite que cada aplicación del cliente parezca ejecutarse en una máquina virtual separada. [5]
Algunas empresas promueven activamente el principio de tenencia múltiple y lo utilizan como fuente de diferenciación competitiva. El uso de la tenencia múltiple aumenta día a día. [6]
La tenencia múltiple permite ahorros de costos por encima de las economías de escala básicas que se pueden lograr al consolidar los recursos de TI en una sola operación. [7] Una instancia de aplicación generalmente incurre en una cierta cantidad de memoria y sobrecarga de procesamiento que puede ser sustancial cuando se multiplica por muchos clientes, especialmente si los clientes son pequeños. La tenencia múltiple reduce esta sobrecarga distribuyéndola entre muchos clientes. Los ahorros de costos adicionales pueden provenir de los costos de licencia del software subyacente (como los sistemas operativos y los sistemas de administración de bases de datos). En pocas palabras, si puede ejecutar todo en una única instancia de software, solo tiene que comprar una licencia de software . El ahorro de costes puede verse eclipsado por la dificultad de escalarla instancia única a medida que crece la demanda: aumentar el rendimiento de la instancia en un solo servidor solo se puede lograr comprando hardware más rápido, como CPU rápidas, más memoria y sistemas de disco más rápidos, y generalmente estos costos crecen más rápido que si la carga fuera dividido entre varios servidores con aproximadamente la misma capacidad agregada. [ cita requerida ] Además, el desarrollo de sistemas multiusuario [8] es más complejo y las pruebas de seguridad son más estrictas debido al hecho de que se están mezclando los datos de varios clientes.
Una de las razones más convincentes para que los proveedores / ISV utilicen la tenencia múltiple es por los beneficios inherentes a la agregación de datos . En lugar de recopilar datos de varias fuentes de datos, con esquemas de base de datos potencialmente diferentes , todos los datos de todos los clientes se almacenan en un esquema de base de datos único. Por lo tanto, ejecutar consultas entre clientes, extraer datos y buscar tendencias es mucho más sencillo. Es probable que esta razón esté sobrevalorada, ya que uno de los requisitos básicos de la tenencia múltiple es la necesidad de evitar que el proveedor de servicios acceda a la información del cliente (inquilino). Además, es común separar la base de datos operativa de la base de datos de minería (generalmente debido a las diferentes características de la carga de trabajo), lo que debilita aún más el argumento.
Debido a la complejidad de personalización adicional y la necesidad de mantener metadatos por inquilino , las aplicaciones de múltiples inquilinos requieren un mayor esfuerzo de desarrollo. Deben tenerse en cuenta consideraciones como la secuenciación de datos basada en vectores, la infraestructura de algoritmos encriptables y las interfaces de control virtualizadas. [9]
La tenencia múltiple simplifica el proceso de administración de versiones. En un proceso de administración de versiones tradicional, los paquetes que contienen cambios en el código y la base de datos se distribuyen al escritorio del cliente y / o al servidor; en el caso de una sola instancia, sería una máquina servidor por cliente. Luego, estos paquetes deben instalarse en cada máquina individual. Con el modelo multiusuario, el paquete normalmente solo necesita instalarse en un único servidor. Esto simplifica enormemente el proceso de gestión de versiones y la escala ya no depende del número de clientes.
Al mismo tiempo, la tenencia múltiple aumenta los riesgos e impactos inherentes a la aplicación de una nueva versión de lanzamiento. Como hay una única instancia de software que atiende a varios inquilinos, una actualización en esta instancia puede causar tiempo de inactividad para todos los inquilinos, incluso si la actualización se solicita y es útil para solo un inquilino. Además, algunos errores y problemas derivados de la aplicación de la nueva versión podrían manifestarse en la vista personalizada de la aplicación por parte de otros inquilinos. Debido al posible tiempo de inactividad , el momento de aplicar la versión puede estar restringido según el horario de uso del tiempo de más de un inquilino.
Las aplicaciones de múltiples inquilinos generalmente se requieren para proporcionar un alto grado de personalización para respaldar las necesidades de cada organización objetivo. La personalización generalmente incluye los siguientes aspectos:
Se espera que las aplicaciones de múltiples inquilinos proporcionen un aislamiento adecuado de seguridad , solidez y rendimiento [10] entre múltiples inquilinos, lo cual es proporcionado por las capas debajo de la aplicación en el caso de aplicaciones de múltiples instancias.
Los costos de rediseñar aplicaciones para múltiples inquilinos pueden ser significativos, especialmente para los proveedores de software que continúan ofreciendo una versión local de inquilino único de su producto. Terminan viéndose obligados a soportar dos productos distintos con todos los costes resultantes.
Una ruta alternativa cada vez más viable a la tenencia múltiple que elimina la necesidad de un cambio arquitectónico significativo es utilizar la tecnología de virtualización para alojar múltiples instancias aisladas de una aplicación en uno o más servidores. De hecho, cuando las aplicaciones se vuelven a empaquetar como dispositivos virtuales, la misma imagen de dispositivo se puede implementar en ubicaciones alojadas por ISV, locales o de terceros de confianza e incluso migrar de un sitio de implementación a otro a lo largo del tiempo.
Multi Alquiler.
Compartir una única instancia operativa agrupada de toda la infraestructura de arriba a abajo es más que una simple conveniencia para el proveedor;
es la única forma de lograr realmente la escala de la nube.
En la nube, los servicios multiusuario son estándar: servicios de datos, servicios DNS, hardware para máquinas virtuales, balanceadores de carga, administración de identidades, etc.