stringtranslate.com

Multitenencia

La multitenencia de software es una arquitectura de software en la que una única instancia de software se ejecuta en un servidor y presta servicio a varios inquilinos. Los sistemas diseñados de esta 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 multitenencia, una aplicación de software está diseñada para proporcionar a cada inquilino una parte dedicada de la instancia, incluidos sus datos, configuración, gestión de usuarios, funcionalidad individual del inquilino y propiedades no funcionales . La multitenencia contrasta con las arquitecturas de múltiples instancias, donde instancias de software independientes operan en nombre de diferentes inquilinos. [1]

Algunos comentaristas consideran que la multitenencia es una característica importante de la computación en la nube . [2] [3]

Adopción

Historia de las aplicaciones multiusuario

Las aplicaciones multiinquilino han evolucionado a partir de tres tipos de servicios y combinan algunas características de ellos:

  1. Tiempo compartido : desde los años 60, las empresas alquilaban espacio y potencia de procesamiento en los ordenadores mainframe ( tiempo compartido ) para reducir los gastos informáticos. A menudo, también reutilizaban aplicaciones existentes, con un simple campo de entrada independiente en la pantalla de inicio de sesión para especificar un ID de cuenta de cliente. Sobre la base de este ID, los contables del mainframe podían cobrar a los clientes individuales por el uso de CPU, memoria y disco/cinta realmente realizado.
  2. Aplicaciones hospedadas: desde la década de 1990, los proveedores de servicios de aplicaciones (ASP) tradicionales hospedaban aplicaciones (existentes en ese momento) en nombre de sus clientes. Según la limitación de la aplicación subyacente, los ASP se veían obligados a hospedar aplicaciones en máquinas separadas (si no se podían ejecutar varias instancias de las aplicaciones en la misma máquina física) o como procesos separados . Las aplicaciones multiusuario representan una arquitectura más madura [4] que permite un servicio similar con un menor costo operativo.
  3. Aplicaciones web : aplicaciones web populares orientadas al consumidor (como Hotmail ) desarrolladas con una única instancia de aplicación que atiende a todos los clientes. Las aplicaciones multiusuario representan una evolución natural de este modelo, ya que ofrecen una personalización adicional a grupos de usuarios dentro de (por ejemplo) la misma organización cliente.

Diferenciación con la virtualización

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. Comparemos esto con la virtualización, donde los componentes se transforman, lo que permite que cada aplicación del cliente parezca ejecutarse en una máquina virtual independiente. [5]

Diferenciación competitiva

Algunas empresas promueven activamente el principio de multiarrendamiento y lo utilizan como fuente de diferenciación competitiva. El uso de multiarrendamiento aumenta día a día. [6]

Economía de la tenencia múltiple

Ahorro de costes

La multitenencia permite ahorros de costos más allá 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 sobrecarga de memoria y procesamiento que puede ser sustancial cuando se multiplica por muchos clientes, especialmente si los clientes son pequeños. La multitenencia reduce esta sobrecarga al distribuirla entre muchos clientes. Se pueden obtener ahorros de costos adicionales de los costos de licencia del software subyacente (como sistemas operativos y sistemas de administración de bases de datos). En términos simples, si puede ejecutar todo en una sola instancia de software, solo tiene que comprar una licencia de software . Los ahorros de costos pueden verse eclipsados ​​por la dificultad de escalar la instancia única a medida que aumenta la demanda: aumentar el rendimiento de la instancia en un solo servidor solo se puede hacer 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 aumentan más rápido que si la carga se dividiera entre varios servidores con aproximadamente la misma capacidad agregada. [ cita requerida ] Además, el desarrollo de sistemas multiinquilino [8] es más complejo y las pruebas de seguridad son más estrictas porque se mezclan los datos de múltiples clientes.

Agregación de datos/minería de datos

Una de las razones más convincentes para que los proveedores/ ISV utilicen la multitenencia es por los beneficios inherentes de la agregación de datos . En lugar de recopilar datos de múltiples fuentes de datos, con esquemas de base de datos potencialmente diferentes , todos los datos de todos los clientes se almacenan en un único esquema de base de datos. Por lo tanto, ejecutar consultas entre clientes, extraer datos y buscar tendencias es mucho más simple. Esta razón probablemente esté sobrevalorada, ya que uno de los requisitos básicos de la multitenencia 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 extracción (generalmente debido a las diferentes características de la carga de trabajo), lo que debilita aún más el argumento.

Complejidad

Debido a la complejidad adicional de personalización y la necesidad de mantener metadatos por inquilino , las aplicaciones multiinquilino 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]

Gestión de versiones

La multiusuaria simplifica el proceso de gestión de versiones. En un proceso de gestión de versiones tradicional, los paquetes que contienen cambios en el código y la base de datos se distribuyen a los equipos de escritorio y/o servidores de los clientes; en el caso de una sola instancia, esto sería una máquina servidor por cliente. Estos paquetes deben instalarse en cada máquina individual. Con el modelo multiusuario, el paquete normalmente solo necesita instalarse en un solo servidor. Esto simplifica enormemente el proceso de gestión de versiones y la escala ya no depende de la cantidad de clientes.

Al mismo tiempo, la multipropiedad 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 presta servicio a varios inquilinos, una actualización en esta instancia puede provocar un tiempo de inactividad para todos los inquilinos, incluso si la actualización se solicita y es útil solo para un inquilino. Además, algunos errores y problemas resultantes de la aplicación de la nueva versión podrían manifestarse en la vista personalizada de la aplicación de otros inquilinos. Debido al posible tiempo de inactividad , el momento de la aplicación de la versión puede estar restringido según el cronograma de uso del tiempo de más de un inquilino.

Mejores prácticas

Según Marc Brooker, en una arquitectura multiusuario, las cargas de trabajo no relacionadas y no correlacionadas se deben agrupar. Esto se debe a que la mezcla de diferentes cargas de trabajo, con diferentes necesidades y patrones, oculta los patrones de cada carga de trabajo. La agrupación de cargas de trabajo reduce la relación pico-promedio del sistema general; las cargas de trabajo individuales pueden utilizar más recursos durante las horas pico sin aumentar significativamente la estructura de costos general del sistema y, en consecuencia, lo ayuda a lograr una mayor eficiencia de costos. Tenga en cuenta que varias cargas de trabajo de la misma aplicación, cliente o industria tienden a comportarse como una sola carga de trabajo. [10]

Requisitos

Personalización

Por lo general, se requiere que las aplicaciones multiusuario proporcionen un alto grado de personalización para satisfacer las necesidades de cada organización de destino. La personalización generalmente incluye los siguientes aspectos:

Calidad del servicio

Se espera que las aplicaciones multiinquilino proporcionen seguridad , solidez y rendimiento adecuados [11] 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.

Virtualización

Los costos de rediseñar aplicaciones para la multiusuaria pueden ser significativos, especialmente para los proveedores de software que siguen ofreciendo una versión de su producto para un solo inquilino en las instalaciones. Terminan viéndose obligados a ofrecer soporte para dos productos distintos, con todos los costos resultantes.

Una alternativa cada vez más viable para la multipropiedad que elimina la necesidad de un cambio arquitectónico significativo es utilizar tecnología de virtualización para alojar varias 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 del 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 con el tiempo.

Referencias

  1. ^ Krebs, Rouven (2012). "Architectural Concerns in Multi-tenant SaaS Applications" (PDF) . Actas de la 2.ª Conferencia Internacional sobre Computación en la Nube y Ciencia de los Servicios (CLOSER 2012) . Conferencia sobre Computación en la Nube y Ciencia de los Servicios. SciTePress. Archivado desde el original (PDF) el 21 de febrero de 2015. Consultado el 21 de febrero de 2015 .
  2. ^ Wainewright, Phil (30 de octubre de 2010). "Definición del verdadero significado de la nube". ZDNet . CBS Interactive . Consultado el 17 de marzo de 2016 . Multiusuario. Compartir una única instancia operativa agrupada de toda la infraestructura de arriba a abajo es más que una simple conveniencia del proveedor; es la única manera de lograr realmente la escala de la nube.
  3. ^ Wilder, Bill (2012). Patrones de arquitectura de la nube: uso de Microsoft amit. O'Reilly Media, Inc. pág. 78. ISBN 9781449357993En la nube , los servicios multiinquilino son estándar: servicios de datos, servicios DNS, hardware para máquinas virtuales, balanceadores de carga, gestión de identidad, etc.
  4. ^ ¿Qué es el modelo de madurez de la arquitectura SaaS? Forbes 20 de noviembre de 2019
  5. ^ [1] El tonto debate sobre la multitenencia
  6. ^ Software como servicio: el gran futuro ComputerWorld 23 de marzo de 2006
  7. ^ "Tecnología Web-to-Print, reducción de costes, aumento de ventas, integración con Salesforce y Metrix". Presscentric.com . Consultado el 20 de enero de 2014 .
  8. ^ "Creación de una aplicación SaaS con Codeigniter MVC". Blog de noticias sobre tecnología informática . Consultado el 5 de mayo de 2016 .
  9. ^ Aulbach, S (2011). "Extensibilidad y compartición de datos en bases de datos multiusuario en evolución". 2011 IEEE 27th International Conference on Data Engineering . págs. 99–110. doi :10.1109/ICDE.2011.5767872. ISBN 978-1-4244-8959-6. Número de identificación del sujeto  17242970.
  10. ^ Creación de arquitecturas SaaS multiusuario . O'Reilly Media. 2024. ISBN 9781098140601.
  11. ^ Zeng, Jiaan (2014). Reparto justo de múltiples inquilinos en almacenes de datos NoSQL . Conferencia internacional IEEE de 2014 sobre computación en clúster (CLUSTER). IEEE. doi :10.1109/CLUSTER.2014.6968761.