4. ¿Qué es una aplicación Multi-Tenant?
● Construir una aplicación basándonos en SaaS (Software as a Service)
○ Básicamente aplicaciones que accedemos por una suscripción, en su gran mayoría, accedida
desde internet.
○ Ejemplo: Office 365, Dropbox, Jira Cloud.
● Única instancia de la aplicación puede servir a varios clientes.
● Multi-Tenancy es un concepto para soluciones en la nube.
● Proporciona aislamiento de datos entre lo clientes.
● Cada vez mas popular es hacia onde va el mundo
○ XaaS (lo que sea como servicio)
5. Características de los inquilinos
● Cada inquilino tiene una identidad especifica.
● La aplicación se comporta de manera diferente para cada inquilino
dependiendo de:
○ Interfaz de usuario.
○ Parámetros de configuración.
○ Datos propios.
○ Funcionalidad individual y propiedades no funcionales.
○ Comportamientos específicos.
● Cada inquilino debe solo acceder a su información o recursos.
7. Conceptos: 2 Básicos
Utilizamos una estrategia de
identificación (o resolución) de
inquilinos para averiguar con qué
inquilino esta consumiendo.
Una estrategia de acceso a datos
del inquilino descubrirá la forma de
recuperar (y almacenar).
8. Estrategias para Identificar
Encabezado del host
El inquilino será inferido por el
encabezado del host enviado por el
navegador al acceder a la aplicación
Cadena de consulta
Se utilizará un parámetro de cadena
de consulta para distinguir entre los
diferentes inquilinos, por ejemplo, " ?
Tenant = abc "; probablemente útil
solo para fines de desarrollo o prueba
IP de origen
Ees posible que desee que las
solicitudes que se originan en las
mismas IP obtengan el mismo
inquilino todo el tiempo
14. Standalone App
● Permite implementarse en la suscripción
del cliente.
● Mayor nivel de aislamiento, pero es la
opción mas costosa.
○ No se puede compartir recursos entre
varios inquilinos.
● Es perfecto para aplicaciones complejas.
● Los inquilinos son mas simple de
personalizar.
15. Una base de datos por inquilino
● Pefecto para situaciones donde temenos
Proveedores de servicios que se ocupan
del aislamiento.
● Permite ejecutar servicios centralizados
como recursos compartidos reduciendo
costos.
● Todas la bases de datos se administran
de forma central.
● Se utiliza una base de datos de catalago
para la parametrización de los inquilinos y
sus bases.
16. Multiples particiones
● Mejor opción para costos reducidos por
inquilino siempre que el aislameiento sea
reducido
● Permite empaquetar gran cantidad de
inquilinos en una base de datos.
● Escalamiento casi infinito.
● Al igual que la anterior tiene una base
catalogo.
17. Como elegir el modelo adecuado
● Escalabilidad:
○ Número de inquilinos.
○ Almacenamiento por inquilino.
○ Almacenamiento de forma agregada.
○ Carga de trabajo.
● Aislamiento de inquilinos: aislamiento de los datos y rendimiento (si la carga
de trabajo de un inquilino afecta a otros).
● Costo por inquilino: costos de la base de datos.
● Complejidad de desarrollo:
○ Cambios en el esquema.
○ Cambios en las consultas (requeridos por el patrón).
18. Como elegir el modelo adecuado
● Complejidad operativa:
○ Supervisión y administración del rendimiento.
○ Administración del esquema.
○ Restauración de un inquilino.
○ Recuperación ante desastres
● Capacidad de personalización: facilidad para admitir las personalizaciones
del esquema que son específicas del inquilino o específicas de la clase de
inquilino.
21. Service Providers
● Detectar en inquilino actual.
● Obtener las partes necesarias de la aplicación con la información.
● Permitir múltiples implementaciones.
ITenanProvider
DBTenantProvider
FileTenantProvider BlobTenantProvider
HttpTenantProvider
22. Middleware Multi-DBContext
● Administrar todos los tipos de solicitudes y
encargados de poner en contexto del
inquilino a la aplicación.
● Redireccionamiento de paginas,
contenidos, o recursos.
● Manejo de errores tanto de negocio como
de infraestructura.
● Nos proporcionara el context de base de
datos para para tenant.
● Las operaciones CRUD
● Chequeo de operaciones cruzadas entre
tenants / inquilinos
● El proveedor de datos debe ser agnóstico.