Skip to content
RED SAGSkills
hardFull Stack Developer interview question

You are building a multi-tenant B2B SaaS app. How would you design data isolation between tenants, and what are the trade-offs?

What the interviewer wants to hear

  • Options: shared tables with tenant_id, schema per tenant, database per tenant
  • Enforce tenant filtering centrally, for example with Postgres row level security
  • Tenant id comes from the authenticated session, never from user input
  • Trade-offs in cost, isolation, migrations and noisy neighbours
  • Tests and audits that prove cross-tenant access is impossible

Model answer

There are three common models. Shared tables with a tenant_id column are cheapest and easiest to migrate, but one missing WHERE clause can leak data. Schema per tenant gives stronger separation but makes migrations slow with thousands of tenants. Database per tenant gives the best isolation and per-customer backups, and suits large enterprise customers, but costs more and needs automation. For most products I start with shared tables and make isolation hard to get wrong: the tenant id comes from the authenticated session, never from the request body, and I enforce it centrally with Postgres row level security or a data access layer that always adds the tenant filter. Every tenant-owned table has tenant_id in its indexes and unique constraints. I add rate limits per tenant against noisy neighbours, automated tests that try cross-tenant access, and a path to move a big customer to its own database later.

Can you answer it under time pressure?

Take a timed hard round and get scored on every answer.

Start mock interview

More hard Full Stack Developer questions