Saltar al contenido
Todos los insights
Arquitectura8 min de lectura

La decisión de multi-tenancy que no puedes aplazar

Aislamiento a nivel de fila, de esquema o de base de datos. La elección parece reversible durante unos seis meses. Después, ya no.

Por VPFUnited Solutions

Todo producto SaaS acaba enfrentándose a la misma pregunta, normalmente un mes después de que el primer cliente enterprise pregunte dónde viven físicamente sus datos. La respuesta determina tu coste operativo, tu historia de cumplimiento y la rapidez con la que puedes incorporar al siguiente cliente.

El aislamiento a nivel de fila mantiene a todos los tenants en tablas compartidas, con una columna discriminadora y políticas aplicadas por la base de datos. Es lo más barato de operar y lo más rápido para incorporar clientes. La trampa está por completo en la aplicación de la política: si el aislamiento vive en el código de la aplicación, una cláusula WHERE olvidada se convierte en una brecha. Traslada la política a la base de datos, donde no puede olvidarse.

El aislamiento a nivel de esquema da a cada tenant su propio esquema en una base de datos compartida. El aislamiento es más evidente y el backup por tenant se vuelve trivial, pero las migraciones ahora se ejecutan N veces y los modos de fallo se multiplican con el número de tenants. Sirve para decenas o cientos de tenants, rara vez para miles.

El aislamiento a nivel de base de datos da a cada tenant su propia base de datos, a veces su propia región. Responde por completo a la pregunta de cumplimiento y cuesta más en todas las demás dimensiones. Resérvalo para los tenants que realmente lo requieren, y diseña de modo que mover un tenant ahí no exija una segunda base de código.

La respuesta pragmática para la mayoría de los productos es el aislamiento a nivel de fila aplicado por la base de datos, con la arquitectura preparada para promover tenants individuales a infraestructura dedicada. Esa preparación cuesta casi nada al principio. Si la omites, añadirla después bajo la presión de un plazo es casi imposible.

Elijas lo que elijas, escribe una prueba automatizada que intente acceso entre tenants y verifique que falla. Ejecútala en cada commit. Es la prueba de mayor valor en una base de código multi-tenant.

Empezamos por el problema que quieres resolver.

¿Tienes una idea que vale la pena construir?

Cuéntanos qué tienes en mente. Te ayudaremos a convertirla en un plan claro y en un producto funcional.