Multi-Tenant SaaS Architecture: A Practical Guide for Architects

Explore essential trade-offs in multi-tenant SaaS architecture to guide architects in designing efficient, scalable systems for diverse customers.

Development
KreanteAugust 14, 20267 hours ago
1786478696191_Hands-connecting-network-cables-in-server-rack.jpeg

A multi-tenant SaaS system serves multiple customers from a single shared application instance, with each customer’s data logically or physically separated from every other. For most B2B SaaS products, the right starting point is a pooled (shared-schema) model with tenant-awareness built in from day one, and a clear migration path to tighter isolation for enterprise customers who need it.

Before you pick a model, here are the core trade-offs every architect should internalize:

  • Cost vs. isolation: Shared-schema is cheapest to operate; database-per-tenant costs more but shrinks the blast radius of a data breach or runaway query.
  • Speed vs. customization: Pooled models let you onboard customers in seconds; siloed models let enterprise customers demand schema changes without affecting anyone else.
  • Compliance vs. simplicity: Regulated customers (HIPAA, SOC 2, GDPR) often require dedicated storage or compute, which pushes you toward a bridge or silo model.
  • Operational overhead: Every step toward stronger isolation adds provisioning complexity, longer upgrade cycles, and more infrastructure to monitor.

Key Takeaways

Multi-tenant SaaS architecture is a spectrum of decisions across identity, compute, and storage — start pooled with tenant-awareness built in, and design migration paths to tighter isolation before you need them.

PointDetails
Start pooled, design for migrationLaunch with shared-schema for cost efficiency, but build the tenant registry and migration tooling from day one.
Enforce tenant context everywherePropagate tenant_id through JWT claims, headers, and middleware so isolation is never dependent on business logic.
Match isolation to business driversCompliance, data residency, and enterprise SLAs — not technical preference — should determine whether you use Pool, Bridge, or Silo.
Instrument per-tenant metrics earlyTag every log, trace, and metric with tenant_id before onboarding the first customer; noisy-neighbor detection depends on it.
Kreante builds and migratesKreante delivers architecture spikes, provisioning pipelines, and migration tooling for SaaS teams moving between isolation tiers.

What does multi-tenant SaaS actually mean for your business?

Multi-tenancy is an architectural strategy, not a synonym for SaaS. You can run a SaaS product on fully single-tenant infrastructure — one stack per customer — and it is still SaaS. Conversely, a multi-tenant architecture can serve a product that is not sold as a subscription at all. Architects who conflate the two end up over-engineering for the business model instead of the actual customer need.

The technical definition is narrow: multiple tenants share at least one layer of infrastructure (compute, storage, or both), with logical or physical controls preventing cross-tenant data access. The business definition is broader: it is the delivery model that lets a vendor maintain one codebase, one deployment pipeline, and one upgrade cycle for all customers simultaneously.

Who benefits most from a pooled multi-tenant approach?

B2B SaaS products with many customers of similar size and similar requirements get the most from shared-schema or shared-compute models. Think project management tools, CRM platforms, or e-commerce backends where the core workflow is nearly identical across customers. Self-serve onboarding, frequent product updates, and thin margins all push toward pooled tenancy because the operational cost per customer stays low.

Single-tenant or hybrid approaches make more sense when customers have materially different workloads, strict data residency requirements, or contractual demands for dedicated infrastructure. An enterprise payroll product serving Fortune 500 companies, for example, often cannot share a database with a 10-person startup on the same platform. A large marketplace with wildly uneven traffic patterns may need dedicated compute for its top sellers to prevent one tenant’s flash sale from degrading everyone else’s checkout experience.

The practical heuristic: start pooled, design for tenant-awareness everywhere, and treat stronger isolation as a paid upgrade tier rather than a default.

How do the three isolation models compare?

AWS frames the three canonical models as Pool, Bridge, and Silo, which map directly to shared-schema, schema-per-tenant, and database-per-tenant at the data layer. Understanding where each model wins and where it breaks down is the core skill for any architect designing a multi-tenant system.

Pool: shared schema, shared compute

Every tenant’s data lives in the same tables, distinguished by a tenant_id column. A single application instance serves all tenants. PostgreSQL’s row-level security (RLS) is the most common enforcement mechanism here: you define a policy that filters every query to the current tenant’s rows automatically. The risk is real — a misconfigured RLS policy can expose one tenant’s data to another, and that failure mode is silent unless you have explicit cross-tenant query testing in your CI pipeline.

1786478698556_Hands-adjusting-secure-server-hardware-controls.jpeg

Bridge: shared compute, isolated storage

Tenants share application servers but get their own schema or database. This is the most popular choice for mid-market SaaS products because it balances cost and isolation reasonably well. Schema-per-tenant (within one PostgreSQL instance) keeps infrastructure costs low while giving each tenant a clean namespace. Database-per-tenant goes further: each customer gets their own connection string, their own backup schedule, and their own restore point. AWS guidance on database-level isolation confirms that DB-per-tenant provides the strongest compliance posture at the storage layer, though it multiplies operational overhead proportionally with tenant count.

Silo: fully isolated stacks

Each tenant gets dedicated compute, storage, and networking. This is the enterprise tier model. Salesforce uses a metadata-driven architecture to serve most customers from shared infrastructure, but its largest enterprise contracts often include dedicated instances. Shopify similarly runs the vast majority of merchants on shared infrastructure while offering Shopify Plus customers more isolation and customization options.

The comparison below maps each model across the dimensions that matter most in architecture reviews:

DimensionPool (shared schema)Bridge (schema/DB per tenant)Silo (dedicated stack)
Cost & ops complexityLowest cost; one schema to maintainModerate; schema migrations multiplyHighest; full stack per tenant
Security & compliance fitRequires RLS; higher cross-tenant riskGood; schema boundary limits blast radiusStrongest; full network and storage isolation
Customization capabilityMinimal; schema changes affect all tenantsModerate; per-tenant schema extensions possibleFull; tenant can dictate schema and config
Scale & performanceNoisy-neighbor risk; shared indexesModerate isolation; per-tenant query plansNo noisy-neighbor; dedicated resources
Upgrade/migration complexitySimplest; one migration per releaseModerate; run migrations per schemaMost complex; coordinate across all stacks

Hybrid models are the norm at scale. Azure’s tenancy guidance documents the common pattern: standard tiers run pooled, enterprise tiers run siloed, and the platform supports migration between them. Design your data layer and provisioning pipeline to support this from the start, even if you launch with only a pooled tier.

Pro Tip: Never treat the isolation model as a single global decision. Different microservices in the same product can use different tenancy patterns — your billing service might be fully pooled while your document storage is per-tenant. Treat tenancy as a spectrum across layers.

How do you pass tenant context reliably across services?

Tenant-awareness is the engineering discipline that makes isolation actually work. The isolation model you choose is only as strong as your ability to enforce it consistently across every service, every query, and every background job.

The foundation is tenant_id propagation. Every inbound request must carry a tenant identifier, and that identifier must flow through every layer of the stack without being dropped or overridden. Common patterns:

  • JWT claims: Embed tenant_id in the access token issued at login. Every service validates the token and extracts the claim before processing any request.
  • HTTP headers: A dedicated header (e.g., X-Tenant-ID) passed by an API gateway after token validation. Services trust the gateway’s assertion rather than re-validating the token themselves.
  • Thread-local / async context: In languages like Java or Go, store the tenant context in a request-scoped object that middleware populates and business logic reads without explicit parameter passing.

Identity integration adds another layer. Microsoft Entra ID (formerly Azure Active Directory) supports multi-tenant app registrations, where a single application registration can authenticate users from multiple Entra ID tenants. Your application’s internal tenant_id may or may not map 1:1 to an Entra ID tenant — most products maintain their own tenant registry and resolve the mapping at login time.

Routing is where the tenant context becomes operational. Two dominant patterns:

  • Subdomain-based routing: acme.yourapp.com routes to the ACME tenant’s resources. Clean for enterprise customers; requires wildcard TLS certificates and DNS automation.
  • Path-based routing: yourapp.com/t/acme/ routes by path prefix. Simpler to operate but less white-label friendly.

For DB-per-tenant models, the tenant registry must also store the connection string (or a reference to a secrets manager entry) so the application can resolve the correct database at request time. A centralized tenant registry service — not a config file — is the right pattern here. It becomes the source of truth for provisioning, routing, and monitoring.

Instrumentation is non-negotiable. Every log line, every trace span, and every metric should carry tenant_id as a tag. Without it, you cannot answer the most common operational question: “Which tenant is causing this spike?” Tools like Datadog, Grafana, and AWS CloudWatch all support custom dimensions; tag them at the middleware layer so no service has to remember to do it manually.

Pro Tip: Design a middleware interceptor that reads the tenant context once at the API gateway boundary, validates it, and injects it into every downstream call. Business logic should never have to look up or validate a tenant — that is infrastructure’s job.

What deployment patterns work at scale?

The Deployment Stamps pattern is the most widely referenced architecture for operating multi-tenant SaaS at scale. A stamp is a self-contained unit of infrastructure: compute, storage, networking, and supporting services, deployed as a group. You can run one stamp per tenant (maximum isolation, maximum cost) or pack multiple tenants onto a single stamp (lower cost, shared fate).

Azure’s documentation distinguishes two stamp types:

  • Single-tenant stamps: One stamp per customer. Used for enterprise contracts where the customer requires dedicated infrastructure, data residency in a specific region, or contractual SLA guarantees that cannot be met on shared resources.
  • Multitenant stamps: Multiple customers share one stamp. The default for standard tiers. Stamps can be replicated across regions for latency or residency reasons.

The operational key is automation. A stamp that requires manual steps to provision is a stamp that will be provisioned inconsistently. Infrastructure-as-code tools — Terraform for cloud-agnostic deployments, Bicep for Azure-native stacks — let you define a stamp as a versioned template and spin up new instances through a CI/CD pipeline. AWS similarly supports this through CloudFormation and CDK, with the AWS SaaS Factory providing reference architectures for stamped deployments.

Common antipatterns to avoid:

  • Hardcoding tenant configuration in application code instead of a central registry.
  • Running schema migrations manually per tenant instead of through an automated migration runner.
  • Deploying stamps without a health check and rollback gate in the pipeline.
  • Skipping tenant-level resource tagging in cloud accounts, which makes cost attribution impossible.

Pro Tip: Build your stamp template to include observability infrastructure (log forwarder, metrics agent, alerting rules) from the first deployment. Retrofitting observability into an existing fleet of stamps is one of the most expensive operational mistakes in multi-tenant SaaS.

How do isolation choices affect security and compliance?

The isolation model you choose directly determines your threat model and the controls you must implement to satisfy it. This is not a theoretical concern — it is the first question a SOC 2 auditor or a HIPAA security officer will ask about your architecture.

In a shared-schema (Pool) model, the primary risk is a broken access control at the application or database layer. A bug in your RLS policy, a missing WHERE tenant_id = ? clause in a raw query, or a misconfigured ORM can expose one tenant’s data to another. The controls that matter most here:

  • Row-level security policies on every shared table, tested with explicit cross-tenant query tests in CI.
  • Separate encryption keys per tenant even within a shared database, so a key compromise is scoped.
  • Application-layer enforcement as a second line of defense — never rely on RLS alone.

Schema-per-tenant and DB-per-tenant models reduce the blast radius of an application bug because the database itself enforces the boundary. A query that escapes tenant context in a DB-per-tenant model hits an empty database, not another tenant’s data. The trade-off is that you now have more attack surface at the infrastructure layer: connection strings, IAM roles, and secrets must be managed per tenant.

Data residency and regulatory requirements are the clearest signal that you need stronger isolation. A healthcare customer subject to HIPAA, or a European customer with GDPR data residency requirements, may need their data in a dedicated database in a specific AWS or Azure region. For HIPAA specifically, a HIPAA compliance checklist covers the technical safeguards that map directly to isolation model choices. The choice between single-tenant and multi-tenant for regulated customers is driven by those requirements, not by cost.

Security controls checklist for enterprise procurement conversations:

  • Tenant data encrypted at rest with per-tenant keys (AWS KMS, Azure Key Vault).
  • Network isolation between tenant resources where applicable (VPC per tenant or security group rules).
  • Audit logs that are immutable and scoped to the tenant’s own data access.
  • Documented RLS policies with test coverage, or schema/DB isolation as an alternative.
  • Incident response runbook that includes per-tenant isolation steps (e.g., disabling a tenant’s connection pool without affecting others).
  • Data deletion and export procedures that satisfy right-to-erasure requests without touching other tenants’ data.

How do you detect and contain a noisy neighbor?

Noisy-neighbor is the most common failure mode in shared-resource models. One tenant’s workload — a bulk import, a runaway report query, a misconfigured webhook loop — degrades performance for every other tenant on the same infrastructure. Azure’s tenancy guidance identifies this as the primary architectural risk of pooled models and recommends a three-layer mitigation strategy.

Metrics to track per tenant:

  • API request rate and error rate (tagged by tenant_id at the gateway).
  • Database query latency and query count per tenant per minute.
  • CPU and memory consumption per tenant (harder in shared compute; use application-level counters).
  • Storage I/O and queue depth for async workloads.
  • Background job duration and failure rate.

Mitigation layers:

  1. Ingress-level controls: Rate limits and request quotas at the API gateway. Set per-tenant limits that reflect the customer’s plan tier. A free-tier tenant should not be able to send 10,000 requests per minute.
  2. Service-level backpressure: Circuit breakers and request prioritization inside the application. When a tenant’s queue depth exceeds a threshold, shed load gracefully rather than letting it cascade.
  3. Operational escalation: Move the offending tenant to a dedicated resource (a separate DB, a separate compute node, or a full silo stamp) when the above controls are insufficient. This is the migration path that must be automated.

Operational playbook for a noisy-neighbor incident:

  • Identify the tenant via per-tenant metrics dashboard (query latency spike, high API error rate).
  • Apply an emergency rate limit at the gateway to cap the tenant’s throughput immediately.
  • Investigate the root cause: runaway query, bulk operation, or application bug.
  • If the tenant is legitimately large, trigger the migration pipeline to move them to a dedicated resource.
  • Notify the tenant with a clear explanation and a timeline for resolution.

How do you automate tenant provisioning, migrations, and upgrades?

Operational maturity in multi-tenant SaaS is measured by how much of the tenant lifecycle runs without human intervention. Manual provisioning does not scale past a few dozen tenants; manual migrations do not scale past a few hundred.

Onboarding automation steps:

  1. API call or webhook triggers the provisioning pipeline (from signup, payment confirmation, or admin action).
  2. Tenant registry creates a new tenant record with a unique ID, plan tier, and isolation model assignment.
  3. Provisioning pipeline runs the appropriate IaC template: creates schema, database, or stamp depending on the tier.
  4. Initial data seeding runs (default configuration, sample data for trial accounts).
  5. Identity provider configuration: create the tenant’s app registration or directory mapping in Microsoft Entra ID or your auth provider.
  6. Health check confirms the new tenant’s resources are reachable before the pipeline marks provisioning complete.
  7. Welcome email or webhook fires to notify the customer-facing system.

Backup and disaster recovery differ significantly by isolation model. In a shared-schema model, a single database backup covers all tenants, but restoring one tenant’s data requires point-in-time recovery and careful extraction — you cannot restore the whole database to recover one tenant’s accidentally deleted records. In a DB-per-tenant model, each tenant has an independent backup schedule and can be restored independently. The operational cost is higher, but the recovery time objective (RTO) for a single tenant is dramatically lower.

Migration between isolation tiers is the operation most teams underestimate. Moving a tenant from shared schema to their own database requires:

  1. An ETL job that reads all rows for the tenant from shared tables and writes them to the new database.
  2. Identifier transformation if primary keys are not globally unique (they should be — use UUIDs from day one).
  3. A dual-write period where writes go to both the old and new location while reads gradually shift.
  4. Automated end-to-end tests that validate data integrity in the new database before cutover.
  5. A rollback gate: if tests fail, revert to the shared schema without data loss.

Upgrade and rollback patterns for multi-tenant systems require more care than single-tenant deployments. Feature flags let you enable new features for a subset of tenants before rolling out broadly. Canary releases by tenant segment — start with internal test tenants, then low-value tenants, then mid-market, then enterprise — give you a blast radius that grows only as confidence grows. For high-value enterprise tenants, coordinate upgrade windows in advance and have a tested rollback procedure ready before the maintenance window opens. Scaling a low-code project follows the same staged-rollout logic, and the migration discipline transfers directly.

What do AWS, Azure, Salesforce, and Shopify actually do?

Cloud vendors and major SaaS platforms provide the most authoritative reference points for multi-tenant architecture decisions.

AWS publishes two key resources architects should bookmark. The SaaS architecture fundamentals whitepaper reframes multi-tenancy as a spectrum of decisions rather than a binary choice, which is the right mental model. The multi-tenant architectures on AWS solution guide provides concrete Pool/Bridge/Silo reference architectures with sample code and deployment templates. AWS SaaS Factory extends this with prescriptive guidance for specific services (Amazon RDS, DynamoDB, EKS) and tenant isolation patterns for each.

Azure covers the same ground through its multitenant architecture guide, which includes the Deployment Stamps pattern, tenancy model trade-offs, and service-specific guidance for Azure SQL, Cosmos DB, and AKS. The Azure guidance is particularly strong on operational automation: it recommends Bicep templates for stamp provisioning and Azure DevOps or GitHub Actions for the CI/CD pipeline that manages stamp lifecycle.

Salesforce built its entire platform on a shared-schema multi-tenant architecture, using a metadata-driven design where tenant configuration — UI layouts, workflow rules, custom fields — is stored in metadata tables and resolved at runtime. This approach enables per-tenant customization without schema changes, which is the gold standard for SaaS platforms that need to serve thousands of customers with divergent requirements from a single codebase.

Shopify runs the majority of its merchants on shared infrastructure, with Shopify Plus offering higher resource limits and more customization. The platform’s architecture separates the storefront (highly cacheable, CDN-served) from the admin and checkout (tenant-aware, database-backed), which allows aggressive caching at the edge without sacrificing per-tenant data isolation.

Microsoft Entra ID (formerly Azure AD) intersects with multi-tenant architecture at the identity layer. A multi-tenant Entra ID app registration allows users from any Entra ID directory to authenticate with your application. Your application then maps the incoming Entra ID tenant ID to your internal tenant record. This is the standard pattern for B2B SaaS products that sell to enterprises already using Microsoft 365.

Key vendor resources to bookmark:

  • AWS SaaS Architecture Fundamentals whitepaper (tenant isolation patterns, antipatterns).
  • Azure Architecture Center: Multitenant applications (Deployment Stamps, tenancy models, service-specific guidance).
  • Salesforce Architect Guide: Platform multitenant architecture (metadata-driven design).
  • PostgreSQL documentation: Row-level security (RLS policy design and testing).

How do you choose the right isolation model?

The decision is not purely technical. Business drivers — customer SLAs, regulatory requirements, workload distribution, and pricing strategy — should determine the isolation model, not the other way around.

Decision matrix:

Business driverRecommended isolation model
Self-serve, homogeneous customers, cost-sensitivePool (shared schema)
Mid-market customers, moderate compliance needsBridge (schema-per-tenant)
Enterprise customers, strict SLAs, data residencySilo (DB-per-tenant or dedicated stamp)
Mixed customer base (standard + enterprise tiers)Hybrid: Pool for standard, Silo for enterprise
Regulated workloads (HIPAA, FedRAMP, SOC 2 Type II)Silo or dedicated stamp, per-tenant encryption keys

Before you finalize the model, gather this data:

  • What is the largest tenant’s expected data volume and query rate at 12 months and 36 months?
  • Do any customers have contractual data residency requirements (specific AWS region, no shared infrastructure)?
  • What is the expected ratio of standard to enterprise customers, and what does the enterprise tier cost?
  • What is your team’s operational capacity for managing per-tenant infrastructure?
  • What is the cost of a cross-tenant data exposure incident (regulatory fines, contract penalties, reputational damage)?

Concrete next steps for a team deciding now:

  • Implement a tenant registry on day one, even if you start pooled. It is the foundation for everything else.
  • Add tenant_id tagging to all logs, traces, and metrics before you onboard your first customer.
  • Write a migration runbook for moving a tenant from Pool to Bridge, even if you never use it. The exercise reveals gaps in your data model.
  • Model your unit economics per tenant at each isolation tier. Cost modeling for SaaS should include infrastructure cost per tenant, not just aggregate cloud spend.
  • For billing, charge isolation as a feature: a “dedicated infrastructure” add-on at the enterprise tier recovers the cost of silo deployments and signals the value of the upgrade.

Kreante’s approach to multi-tenant SaaS projects

Kreante treats tenancy decisions as business trade-offs, not technical dogma. The right isolation model depends on your customer profile, your compliance obligations, and your team’s operational capacity — not on which pattern looks cleanest in a diagram.

Kreante’s engagement flow for multi-tenant SaaS projects:

  • Discovery: Map the customer profile, compliance requirements, and expected scale. Identify which isolation model fits the business today and at 3x growth.
  • Architecture spike: Build a minimal proof-of-concept that validates the tenant registry, routing, and data isolation pattern before committing to a full build.
  • Pilot: Onboard a small cohort of real tenants on the new architecture. Instrument everything. Identify noisy-neighbor risks and provisioning gaps before they become production incidents.
  • Migration: Move existing tenants from legacy architecture to the new model using the staged ETL approach described above.
  • Support: Post-launch monitoring, per-tenant alerting, and ongoing architecture reviews as the product scales.

Kreante has delivered 265+ projects across 35 countries, including SaaS platforms, marketplaces, and AI-enabled business applications. The DAVCO AI project is one example of a delivered AI-enabled platform where tenant isolation and data architecture were central design decisions from the first sprint.

The case for treating multi-tenancy as a spectrum, not a switch

Most architecture debates about multi-tenant SaaS get stuck on the wrong question. Teams argue about whether to use shared schema or database-per-tenant as if it is a single, product-wide decision made once at the beginning and never revisited. That framing produces bad outcomes in both directions: products that launch with DB-per-tenant because it “feels safer” and then spend years fighting provisioning complexity at scale, and products that launch fully pooled and then scramble to retrofit isolation when their first enterprise customer demands a dedicated environment.

The more useful mental model is that tenancy is a property of each architectural layer independently. Your identity layer might be fully pooled (one Entra ID app registration, one user directory). Your compute layer might be pooled for standard customers and siloed for enterprise. Your storage layer might be schema-per-tenant for transactional data and shared for analytics. Each of those choices is made separately, driven by the specific risk and cost profile of that layer.

What the conventional advice consistently underweights is the cost of not designing migration paths early. The teams that end up in expensive rewrites are not the ones who chose the wrong isolation model at launch. They are the ones who chose a model without building the tooling to move tenants between models. A tenant registry, UUID primary keys, and an ETL migration framework are not premature optimization. They are the minimum viable infrastructure for a product that will grow.

The second thing most guides underweight is instrumentation. You cannot manage what you cannot measure at the tenant level. Per-tenant metrics are not a nice-to-have for large deployments — they are the prerequisite for every operational decision: noisy-neighbor detection, capacity planning, cost attribution, and migration prioritization. Build them before you need them, because by the time you need them, you will not have time to build them.

The practical priority order: tenant registry first, instrumentation second, migration tooling third. The isolation model itself is almost secondary to having those three capabilities in place.

Kreante builds multi-tenant SaaS products that scale past the first enterprise customer

The hardest part of multi-tenant SaaS is not the initial architecture — it is the moment your first enterprise customer asks for dedicated infrastructure and you realize your provisioning pipeline cannot support it. Kreante’s AI and custom development services are built around exactly that problem: designing tenant-aware systems from the first sprint so that moving a customer from a pooled tier to a dedicated environment is a pipeline run, not a six-month rewrite.

1785901485376_kreante.jpg

Kreante works with SaaS teams at the architecture spike stage, before the wrong decisions get baked in, and stays through migration and post-launch support. The engagement starts with a discovery session that maps your customer profile, compliance requirements, and scale projections to a specific isolation model and provisioning strategy. You leave with a working prototype and a migration runbook, not a slide deck. For SaaS teams serious about sustainable growth and technical foundations that hold at scale, that combination of speed and rigor is what separates a prototype that ships from one that gets rewritten. Get in touch to scope your architecture spike.

Sources

Authoritative references for architects validating implementation details and compliance requirements:

FAQ

Multi-tenant SaaS means multiple customers share a single application instance and underlying infrastructure, with each customer’s data kept logically or physically separate. The architecture reduces per-customer operating costs and lets the vendor maintain one codebase and one upgrade cycle for all customers simultaneously.

Salesforce and Shopify are two of the most widely cited examples. Salesforce serves most customers from a shared-schema architecture using metadata-driven customization; Shopify runs the majority of merchants on shared infrastructure while offering higher isolation to Shopify Plus customers.

Yes. Microsoft 365 is a multi-tenant SaaS platform where each organization gets its own Microsoft Entra ID tenant (directory), but the underlying application infrastructure is shared across all customers. Microsoft Entra ID’s multi-tenant app model is also the standard pattern for B2B SaaS products that authenticate enterprise users.

In a multi-tenant architecture, multiple customers share compute and storage resources, which lowers cost and simplifies operations. In a single-tenant architecture, each customer gets a dedicated stack, which provides stronger isolation and supports strict data residency or customization requirements. The choice between the two is driven by business requirements: multi-tenancy favors cost and fast onboarding; single-tenancy suits regulated or heavily customized workloads.

The noisy-neighbor problem: one tenant’s workload degrades performance for all others on the same infrastructure. Mitigation requires per-tenant rate limits at the API gateway, service-level circuit breakers, and the operational ability to move a heavy tenant to dedicated resources without downtime.