Explica modelos de aislamiento multi-tenant para identidad, datos, cómputo, caché, archivos, jobs, observabilidad y personalización en productos SaaS.
Última actualización
Actualizada
Nivel
Profundización
Multi-tenancy no es una columna añadida al final del modelo. Es la capacidad de compartir producto e infraestructura sin mezclar autoridad, datos, configuración, rendimiento ni operación entre clientes.
Un sistema multi-tenant atiende múltiples organizaciones mediante una plataforma común. Compartir reduce costo y facilita evolución, pero introduce una responsabilidad crítica: cada operación debe ejecutarse dentro del contexto correcto y respetar límites verificables.
El tenant no es necesariamente una persona ni una sucursal. En DomiSys, el tenant principal puede ser el negocio; las sucursales son divisiones internas con permisos y datos adicionales.
Sin multi-tenancy, cada cliente necesitaría una instalación independiente o el sistema mezclaría datos y configuraciones sin una frontera consistente.
La arquitectura SaaS busca equilibrar:
Aislamiento.
Eficiencia de infraestructura.
Operación centralizada.
Personalización controlada.
Capacidad de crecimiento.
Facturación y límites por cliente.
Migraciones de producto coordinadas.
El reto no es permitir que varios negocios creen pedidos. El reto es garantizar que una operación del negocio A nunca lea, modifique, cachee, publique o restaure información del negocio B.
La entrada incluye un negocio solicitado, pero el resultado se crea únicamente después de comprobar la membresía. Las capas internas reciben un contexto autorizado, no headers sin validar.
Ofrece una frontera visible, aunque el tooling, las migraciones y el número de schemas pueden volverse difíciles de operar. No todos los motores y ORMs lo manejan igual.
Tenants pequeños comparten infraestructura; tenants grandes o regulados se asignan a recursos dedicados.
El modelo híbrido introduce routing y operación adicional. El sistema necesita saber dónde vive cada tenant sin filtrar esa decisión por todo el dominio.
No existe una jerarquía donde “base por tenant” siempre sea superior. El aislamiento más fuerte puede ser inviable si el equipo no puede operar miles de instancias de manera segura.
Una foreign key solo por order_id permitiría relacionar datos de tenants distintos si los IDs no fueran globalmente únicos o si existiera un error de aplicación.
Las restricciones son una defensa adicional, no reemplazan autorización ni repositorios scoped.
Un repositorio que exige tenant hace visible la frontera. Aun así, deben existir pruebas y revisión para queries personalizadas, reportes y migraciones.
Row-Level Security puede añadir protección en motores compatibles. Su valor depende de una configuración correcta, contexto de conexión y cobertura de herramientas administrativas.
Evita usar IDs de todos los tenants como labels permanentes en sistemas de métricas con cardinalidad limitada. Para detalle, utiliza logs, trazas o agregaciones controladas.
La arquitectura SaaS puede necesitar medir usuarios, transacciones, almacenamiento o capacidades.
Una medición confiable define:
Evento que representa consumo.
Momento de contabilización.
Idempotencia.
Correcciones.
Zona horaria y periodo.
Fuente de verdad.
Auditoría.
Facturar directamente desde métricas operativas aproximadas puede producir inconsistencias. El uso comercial suele requerir un ledger o registros durables.
En tablas compartidas, restaurar un tenant puede requerir extraer filas relacionadas y reconciliar cambios posteriores. Debe diseñarse antes de un incidente.
No basta con probar que un usuario puede consultar sus datos. Debes intentar cruzar fronteras:
ID válido de otro tenant.
Caché calentada por otro tenant.
Archivo de otro negocio.
Job con contexto equivocado.
Evento alterado.
Usuario removido con sesión activa.
Admin de una sucursal accediendo a otra.
Búsqueda y exportación.
Automatiza matrices donde el recurso pertenece al tenant A y la identidad al tenant B. La respuesta no debe revelar si el recurso existe cuando esa información también sea sensible.
¿Por qué una columna tenant_id no completa un diseño multi-tenant?
¿Qué diferencia existe entre base por tenant y tablas compartidas en restauración y operación?
¿Cómo impedirías referencias entre pedidos e items de tenants diferentes?
¿Qué dimensiones incluirías en una clave de caché de catálogo?
¿Cómo ejecutarías una migración sobre 10.000 tenants sin que uno bloquee a todos?
Ver respuestas orientativas
Porque identidad, autorización, cache, archivos, eventos, jobs y operación también necesitan scope.
La base separada facilita restore individual pero multiplica operación; las tablas compartidas simplifican infraestructura pero exigen tooling para aislar datos.
Con claves y foreign keys compuestas que incluyan tenant, además de repositorios scoped.
Tenant, sucursal, versión, locale, permisos y parámetros que cambien la respuesta.
Con lotes, checkpoints por tenant, idempotencia, canaries, métricas y aislamiento de fallos.