Multi-tenant architecture means one running application serves many customers, called tenants, while each tenant sees only its own data. As IBM describes it, a single instance of the software and its underlying database and hardware serves multiple tenants. The hard part is not sharing. It is deciding how much to share, and proving that nothing leaks.
This guide covers the three data isolation models, how to choose between them, the security mistakes that cause real incidents, and the design decisions worth making early.
TL;DR
- Multi-tenancy lets many customers share one application and its infrastructure, which lowers per-tenant cost and maintenance.
- The three core data models are silo (dedicated), bridge (shared database, separate schemas) and pool (shared schema with a tenant ID). Most mature products end up using more than one.
- Security rests on identity and authorization checked on every request, not on a filter added at the end. Test with the role your app actually runs as.
- Build tenant-tagged logging and per-tenant limits from day one. Retrofitting them is painful.
- Plan for moving a large customer from the shared pool to dedicated infrastructure, because enterprise buyers often ask for it.
Table of Contents
- What multi-tenancy actually is
- The three data isolation models
- How to choose a model
- Multi-tenant security that holds up
- Noisy neighbors and fair resource use
- Design decisions worth making early
- Our perspective
- Building or migrating to a multi-tenant platform
- FAQ
- Sources
What multi-tenancy actually is
A tenant is whatever your business logic says is the unit of separation. For a CRM it is a company. For a marketplace it might be a seller. For a multi-brand operator it could be a brand. Defining this early matters, because Microsoft’s Azure guidance advises defining tenants by business logic and mapping them to service-level objectives rather than assuming a one-size-fits-all approach.
The contrast is single-tenant architecture. AWS describes it as each customer having dedicated compute, data storage and cloud infrastructure, which helps prevent noisy neighbor risk and supports data residency in specific regions. The price is cost and operational weight: ten customers means ten deployments to patch, monitor and upgrade.
Multi-tenancy flips that. Per IBM, sharing compute, storage and maintenance lets providers reach economies of scale and lower per-tenant costs. That is why most SaaS products you use daily are built this way.

The three data isolation models
The AWS multi-tenant guidance names three database models. Each trades cost against isolation.
| Model | How data is separated | Strength | Cost |
|---|---|---|---|
| Silo | Dedicated database or infrastructure per tenant | Highest isolation, lowest cross-tenant risk | Highest operational overhead |
| Bridge | Shared database instance, separate schema per tenant | Middle ground, easier per-tenant restore | Schema migrations multiply with tenant count |
| Pool | Shared database and schema, tenant ID on every row | Lowest cost, highest density | The application carries the isolation burden |
Pool: cheap, dense, and unforgiving
Pool is the default for products with many small tenants. Every table carries a tenant identifier, and every query must filter on it. A single missed filter is a data leak, which is why many teams push the rule into the database. AWS Prescriptive Guidance on the PostgreSQL pool model uses row-level security (RLS) so that policies restrict which rows each request can see.
Silo: when the customer insists
Some tenants need fully separated resources for compliance reasons. AWS notes that large customers sometimes require dedicated clusters to reduce noisy neighbor effects. Silo is easy to reason about and expensive to run at scale.
Bridge and the hybrid reality
In practice, one model rarely fits everyone. The Software Engineering Guide frames isolation as a spectrum, not a switch, and recommends choosing per tier and per resource. Small tenants share a pool. Enterprise tenants get dedicated environments. That split needs an architecture decision record from the start, because each tier has a different lifecycle for provisioning, upgrades and offboarding.
How to choose a model
Ask these questions in order:
- Who are the buyers? Self-serve small businesses tolerate shared infrastructure. Regulated enterprises often do not. AWS’s ISV guidance says large enterprise customers frequently refuse pooled infrastructure over compliance and performance concerns, and that being able to move a tenant from pool to silo helps close those deals.
- What does a breach cost? If one leaked row ends the company, buy more isolation.
- How many tenants in year two? Hundreds of schemas become a migration headache. Thousands of databases become a fleet-management job.
- What do you promise on performance? If you sell guaranteed throughput, shared resources need hard quotas.
- Do you have a platform team? Silo and hybrid models demand automation for provisioning and upgrades.
The warning from Microsoft’s guidance is worth repeating: avoid over-architecting for scale you do not have. Start with the simplest model that satisfies your first ten customers’ contracts, and keep the seams clean enough to change.
Multi-tenant security that holds up
Security is where multi-tenant designs fail, and the failures are usually mundane.
Identity is the perimeter
Microsoft’s identity guidance for SaaS workloads stresses that keeping tenant data separate depends on effective authentication and authorization. It also recommends one account per person with authorization logic that handles access to several tenants, rather than multiple accounts for the same user. Duplicate accounts add friction and risk.
Authorize on every request
The OWASP Multi-Tenant Security Cheat Sheet calls for tenant-aware rate limiting, strict resource quotas and authorization checks at every request. It adds a point many teams miss: authorize before reading any cache or search index, since filtering after retrieval can leak sensitive data.
Do not trust RLS blindly
Row-level security is a good backstop, but only if it is actually enforced. OWASP warns against relying on RLS while the app connects as a superuser or a role with BYPASSRLS, because those roles skip the policies. AWS’s PostgreSQL RLS walkthrough adds that table owners bypass policies by default unless the table is altered with FORCE ROW LEVEL SECURITY.
A practical checklist:
- Connect the application with a least-privileged role.
- Run your isolation tests as that exact deployed role. Tests run with privileged connections produce false confidence.
- Add a test that deliberately queries as tenant A for tenant B’s rows and expects nothing.
- Reject any request that arrives without a resolved tenant context.
AI features need their own isolation
If your product includes AI agents or search over tenant documents, isolation must reach the retrieval layer. OWASP recommends separate vector namespaces or collections per tenant so one tenant’s prompts cannot pull another’s chunks. We cover the runtime side of this in our piece on AI agent safety controls.

Noisy neighbors and fair resource use
When tenants share compute, one heavy customer can slow everyone else. The fixes are the same ones OWASP lists: per-tenant rate limits, quotas and queue partitioning. Outbound traffic needs the same thinking. Email, webhooks and API calls made on behalf of tenants can hit provider throttles, and one tenant’s burst can starve the rest. This engineering write-up on email rate limiting shows how to reason about per-sender limits so a single mailbox does not exhaust shared capacity.
The operational side matters just as much. AWS’s multi-tenant agent guidance makes the case for designing observability upfront: if logs, traces and metrics do not carry tenant metadata from the start, you cannot identify noisy neighbors or attribute costs once the system grows. Structured logging with tenant context, applied through middleware, keeps this out of your business logic.
Design decisions worth making early
Put tenant context in one place. Resolve the tenant once, at the edge (subdomain, token claim or API key), and pass it down through a single mechanism. The Software Engineering Guide puts it bluntly: tenant context is sacred across every request, query and log line.
Make the tenant a first-class column. Even if you start in a pool, include the tenant ID in every table and every index. Moving later to bridge or silo is far easier when each row already knows where it belongs.
Design the tenant lifecycle. Provisioning, suspension, export, deletion and restore all need code paths. Enterprise buyers will ask about each.
Plan tenant migration. A tenant moving from pool to silo should be a tool, not a project. Build the export and import path before the first big deal needs it.
Keep customization in configuration. Per-tenant code forks defeat the point of sharing. Feature flags, settings and theming scale. Forks do not.
Mind your integrations. Each tenant brings its own payment accounts, CRMs and email domains. Store credentials per tenant, scope them narrowly and log their use. Our post on API modernization without a big bang covers how to evolve those interfaces safely while customers keep using them.
Our perspective
Most multi-tenancy trouble we see is not a wrong model. It is a model chosen once and never revisited. A platform starts as a pool because that is fast, then a larger customer arrives with a compliance questionnaire, and the team discovers that tenant context was never threaded cleanly through logs, jobs and integrations.
We build custom platforms and migrations for brands with real volume, and we run our own operation on the same principles. Our AI agents work inside live workflows, for example booking sessions, charging cards and sending invites for three combat sports brands at once. That kind of work forces the habits that make shared systems safe: every action tied to the right brand, every payment and message traceable, and every automated step checkable.
Our advice is plain. Start with the simplest isolation that meets your contracts. Put tenant identity into every request, log line and background job from the first commit. Test isolation as the deployed role, not as an admin. And write down the path from pool to dedicated before someone asks for it. A senior team that stays after launch matters here, because the right model changes as your customers do.
— Chase Weir
Building or migrating to a multi-tenant platform
If you are moving a legacy single-tenant system to a shared platform, or building a new one, the sequencing matters more than the technology. We have done this kind of work before, such as moving a Drupal 6 research platform to a modern stack. If you want a senior team to scope your tenancy model, migration path and AI integrations, see what we build at Dogtooth Inc.
FAQ
What is the difference between single-tenant and multi-tenant architecture?
In single-tenant architecture each customer gets dedicated compute, storage and infrastructure. In multi-tenant architecture customers share one application instance and logically separated data. Multi-tenancy is cheaper to run and easier to update. Single-tenant offers stronger isolation at higher cost.
What are the drawbacks of multi-tenant architecture?
The main risks are data leakage between tenants, noisy neighbors consuming shared resources, and tougher customization per customer. Some enterprise buyers also reject shared infrastructure outright for compliance reasons. Good isolation tests, quotas and a path to dedicated environments address most of these.
Which multi-tenant database model should I use?
Use pool for many small tenants, silo for tenants with strict compliance or performance needs, and bridge as a middle option. Most growing products end up hybrid, mapping tenants to tiers by size, pricing or compliance. Begin with the simplest model your contracts allow.
Is row-level security enough to isolate tenants?
No. RLS is a strong safeguard, but superusers and BYPASSRLS roles skip it, and table owners bypass it unless it is forced. Pair it with application-level authorization, a least-privileged database role and tests run as that role.
Sources
- What Is Multi-Tenant? | IBM
- Microsoft Azure Architecture Center: multitenant overview
- AWS: Modern SaaS architecture
- AWS: Multi-tenant architectures on AWS
- AWS Prescriptive Guidance: PostgreSQL pool model
- AWS Prescriptive Guidance: silo model
- Software Engineering Guide: multi-tenancy and SaaS architecture
- AWS: building blocks of multi-tenant SaaS
- Microsoft Learn: identity and access management for SaaS
- OWASP Multi-Tenant Security Cheat Sheet
- AWS Database Blog: multi-tenant data isolation with PostgreSQL RLS
- AWS: building multi-tenant agents with Amazon Bedrock AgentCore
- Engineering write-up on email rate limiting



