¿Qué es exactamente una aplicación multiinquilino?

15

De acuerdo con la definición disponible en línea es " La tenencia múltiple es una arquitectura en la que una sola instancia de una aplicación de software sirve a varios clientes ". Significa que tengo un sitio web de restaurante o escuela y proporciono acceso a diferentes restaurantes o escuelas para usar mi aplicación con sus propios datos al usar su credencial que proporciono una vez que compran mi producto de administración escolar. Al igual que mi sitio web es como schoolmanagement.com y proporciono diferentes subdominios a clientes de diferentes escuelas como school1.schoolmanagement.com y school2.schoolmanagement.com, pero el código es el mismo detrás de ambos subdominios. Ambas escuelas tienen una funcionalidad diferente o el tema depende de su base de datos separada. Entonces necesito proporcionarschoolmanagement.com para iniciar sesión y una vez que mi cliente inicia sesión en función de su credencial de inicio de sesión, redirijo a su URL respectiva, por ejemplo, school1.schoolmanagement.com .

Esta es mi comprensión de la aplicación de múltiples inquilinos. ¿Es correcto mi entendimiento? ¿Hay alguna aplicación en línea de múltiples inquilinos que pueda pasar?

Nomi Ali
fuente
1
¿Qué quiere decir con "¿Hay alguna aplicación en línea de múltiples inquilinos que pueda pasar"? ¿Desea obtener la fuente, o probar como inquilino, o ejecutar como host? Como observa, el alojamiento de dominios es un ejemplo común de múltiples inquilinos, con empresas de alojamiento grandes y pequeñas. Google Apps for Business (o cualquiera que sea la marca actual) también es una aplicación multiusuario bastante amplia.
Kristian H
1
Hasta ahora, estás en el camino correcto. La tenencia múltiple se refiere a la propiedad de los datos. Los datos están segmentados por inquilinos (propietarios). La aplicación solía ser la misma por una simple razón: economía de escala. El almacenamiento de datos también podría ser el mismo o podría ser diferente para cada cliente. Los datos no son compartidos y accesibles entre los inquilinos (o, por lo general, no lo son, por lo que sé).
Laiv
@ KristianH gracias por el ejemplo de alojamiento de dominio, lo tengo.
Nomi Ali
@Laiv ¿Entonces podemos tener una base de datos diferente para cada cliente con su propia configuración separada?
Nomi Ali
2
Si. Esa es (IMO) la forma preferible. Pero también es el más caro. Cuando digo bases de datos diferentes, podrían ser: a) Diferentes esquemas o instancias de db dentro del mismo RDBMS o b) RDBMS totalmente diferentes.
Laiv

Respuestas:

9

Si eso es. Pero la definición de wikipedia no es lo suficientemente general. No aborda arquitecturas de varios niveles o nuevas formas de arquitectura como SOA o microservicios.

La tenencia múltiple se trata de sistemas de software y aislamiento de datos . Algunos ejemplos:

  • Un sistema de varios niveles con una base de datos única puede ser multiinquilino. Ejemplo: un sistema SAP está compuesto por un servidor de base de datos y un par de servidores de aplicaciones web que exponen de manera escalable los servicios web. Es multiinquilino: puede agregar un nuevo cliente sin cambiar la instalación del software en ejecución, y varios clientes pueden usar el sistema sin conocerse nunca. Los datos están completamente aislados (tecnología patentada).
  • su sistema está compuesto por uno o varios procesos que ejecutan servicios web que están expuestos a diferentes clientes a través de diferentes nombres de dominio (pero siguen siendo los mismos procesos que lo ejecutan en el servidor). El aislamiento de datos se logra con bases de datos separadas. Definitivamente es multiinquilino.
  • un sistema de microservicio podría ejecutar de manera similar varios conjuntos de servicios web acoplados libremente, cada uno utilizando una microbase de datos propia. Si es necesario para escalar, puede iniciar nuevos clones de los mismos microservicios y, a través de alguna función de registro, encontrarán a sus pares y se conectarán automáticamente a ellos, ofreciendo al usuario el comportamiento de una sola aplicación. Entonces hay dos escenarios posibles:
    • si, cuando desea atender a un nuevo cliente, debe iniciar un nuevo conjunto de microservicios por separado y organizar que los microservicios para un cliente solo se conecten a los microservicios relacionados con el mismo cliente, entonces es un solo inquilino.
    • pero si pudiera atender a nuevos clientes utilizando las instancias en ejecución (y solo se necesitarían nuevos microservicios para el rendimiento), entonces es multicliente
Christophe
fuente
1

Yo diría que sí, su comprensión es básicamente correcta. La aplicación es compartida por varios clientes, y también los datos de cada cliente se incluyen en la base de datos. Compartir el mismo código sin tener los datos de diferentes clientes incluidos en la misma base de datos probablemente no se consideraría multiusuario.

Andy
fuente
2
@NomiAli No, no consideraría ese multiinquilino. Eso es sellar un entorno separado para cada cliente. Uno de los beneficios del multiempresa es que la base de datos y el software se actualizan para todos los clientes al mismo tiempo. Una implementación, y todos están en la versión más nueva. De lo que estás hablando es de que cada cliente tiene su propia instalación separada. Supongo que podría tener una base de código compartida pero diferentes bases de datos, pero eso sería una tontería, ya que debe tener mucho cuidado con los cambios en su base de datos, lo que lo hace más costoso, lo que anula el propósito del multiempresa.
Andy
1
@NomiAli Un esquema por cliente tendría aún más inconvenientes que una base de datos por cliente, es aún más difícil de administrar porque tiene que ejecutar los mismos scripts simplemente cambiando los nombres de los esquemas. Nuevamente, no es imposible, pero el objetivo de una aplicación multiinquilino es reducir los costos para el proveedor de software; las cosas que estás preguntando los empujan hacia arriba.
Andy
2
Entonces, si mi base de datos solitaria, que contiene todos los inquilinos, falla o se ve comprometida ... ¿A dónde va la reducción de costos? ¿Y qué sucede cuando cada tenan tiene diferentes necesidades de recursos y rendimiento? ¿Qué pasa si quieren tener acceso al almacenamiento de datos? ... Si. Diferentes almacenes de datos por tenan y diferentes esquemas es multitenacy. Aquí, la estrategia comercial y los servicios que queremos proporcionar al cliente son más importantes que los detalles de implementación. La tenencia múltiple es una característica, un valor diferencial. Cuanto más cerca esté de las necesidades del cliente, mejor.
Laiv
44
Exageras un poco el aspecto de múltiples bases de datos. Múltiples bases de datos es solo una decisión de diseño; puede hacer que varias bases de datos compartan el mismo esquema y usar un script para actualizarlas todas simultáneamente. Todas las aplicaciones de múltiples inquilinos deben separar los datos de cada cliente de los otros clientes; el mecanismo por el cual se hace esto es un detalle de implementación, y depende de factores como el grado de aislamiento deseado, etc.
Robert Harvey
0

Multi-tenancy es una arquitectura en la que una sola instancia de una aplicación de software sirve a múltiples clientes. Cada cliente se llama inquilino. Los inquilinos pueden tener la capacidad de personalizar algunas partes de la aplicación, como el color de la interfaz de usuario (UI) o las reglas comerciales, pero no pueden personalizar el código de la aplicación.

En una arquitectura multiinquilino, varias instancias de una aplicación operan en un entorno compartido. Esta arquitectura puede funcionar porque cada inquilino está integrado físicamente, pero lógicamente separado; lo que significa que una sola instancia del software se ejecutará en un servidor y luego servirá a múltiples inquilinos. De esta manera, una aplicación de software en una arquitectura multiinquilino puede compartir una instancia dedicada de configuraciones, datos, administración de usuarios y otras propiedades.

Para obtener más información, consulte https://whatis.techtarget.com/definition/multi-tenancy .

Como en su caso, todos los miembros de la escuela que se suscriban a su sitio serán autorizados en función de los roles y permisos de arrendamiento y se les proporcionará acceso a sus respectivas bases de datos a través de la misma aplicación. Una sola aplicación que está conectada a múltiples bases de datos. Si crea un subdominio para cada escuela, eso hace que recurra al mismo modelo de Single Tenancy.

Espero que esto responda tu pregunta.

Suraj Gauraje
fuente
1
¡Bienvenido a Ingeniería de software ! Por favor, editar su respuesta para incluir una referencia a su fuente ; En este momento es un caso de plagio .
Glorfindel hace