Multi-tenancy
Un mismo sistema atendiendo a muchos clientes, y cada uno ve solo sus datos.
El multi-tenancy (o arquitectura multiinquilino) es un diseño en el que una sola instalación de un software, con sus servidores y bases de datos, atiende a muchos clientes a la vez. Cada cliente es un tenant (inquilino). Cuando mil empresas usan la misma app de gestión de proyectos, casi siempre están en el mismo sistema, pero cada una ve solo sus proyectos y sus usuarios.
Es lo que hace que el SaaS sea accesible: el proveedor opera y actualiza un sistema en lugar de mil, y reparte el costo del hardware entre todos. La nube en sí también es multi-tenant: tu máquina virtual puede compartir un servidor físico con máquinas de desconocidos, separadas por el hypervisor.
Lo difícil es el aislamiento. Cada consulta tiene que filtrar por tenant, porque un solo bug que se olvide el filtro puede mostrarle los datos de una empresa a otra. También está el problema del vecino ruidoso (noisy neighbor): un tenant que corre un reporte enorme puede hacer más lento a todos. Los diseños van desde todos los tenants en las mismas tablas con una columna tenant_id, a una base de datos por tenant, hasta una copia completa aparte para clientes grandes, lo que se llama single-tenant.
Para quedarse
- Un sistema, muchos clientes (tenants), cada uno aislado de los demás.
- La infraestructura compartida es lo que abarata el SaaS y la nube.
- Un filtro por tenant olvidado puede filtrar datos entre clientes.
- El aislamiento puede ser una columna, una base aparte o un despliegue aparte.