DevelopmentPrototype vs MVP: How to Choose and Build the Right Test
Understand the key differences between a prototype and an MVP. Learn how to choose the right approach to validate your product ideas effectively.
Explore essential trade-offs in multi-tenant SaaS architecture to guide architects in designing efficient, scalable systems for diverse customers.

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:
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.
| Point | Details |
|---|---|
| Start pooled, design for migration | Launch with shared-schema for cost efficiency, but build the tenant registry and migration tooling from day one. |
| Enforce tenant context everywhere | Propagate tenant_id through JWT claims, headers, and middleware so isolation is never dependent on business logic. |
| Match isolation to business drivers | Compliance, data residency, and enterprise SLAs — not technical preference — should determine whether you use Pool, Bridge, or Silo. |
| Instrument per-tenant metrics early | Tag every log, trace, and metric with tenant_id before onboarding the first customer; noisy-neighbor detection depends on it. |
| Kreante builds and migrates | Kreante delivers architecture spikes, provisioning pipelines, and migration tooling for SaaS teams moving between isolation tiers. |
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.
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.
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.

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.
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:
| Dimension | Pool (shared schema) | Bridge (schema/DB per tenant) | Silo (dedicated stack) |
|---|---|---|---|
| Cost & ops complexity | Lowest cost; one schema to maintain | Moderate; schema migrations multiply | Highest; full stack per tenant |
| Security & compliance fit | Requires RLS; higher cross-tenant risk | Good; schema boundary limits blast radius | Strongest; full network and storage isolation |
| Customization capability | Minimal; schema changes affect all tenants | Moderate; per-tenant schema extensions possible | Full; tenant can dictate schema and config |
| Scale & performance | Noisy-neighbor risk; shared indexes | Moderate isolation; per-tenant query plans | No noisy-neighbor; dedicated resources |
| Upgrade/migration complexity | Simplest; one migration per release | Moderate; run migrations per schema | Most 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.
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:
tenant_id in the access token issued at login. Every service validates the token and extracts the claim before processing any request.X-Tenant-ID) passed by an API gateway after token validation. Services trust the gateway’s assertion rather than re-validating the token themselves.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:
acme.yourapp.com routes to the ACME tenant’s resources. Clean for enterprise customers; requires wildcard TLS certificates and DNS automation.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.
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:
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:
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.
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:
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:
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:
tenant_id at the gateway).Mitigation layers:
Operational playbook for a noisy-neighbor incident:
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:
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:
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.
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:
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 driver | Recommended isolation model |
|---|---|
| Self-serve, homogeneous customers, cost-sensitive | Pool (shared schema) |
| Mid-market customers, moderate compliance needs | Bridge (schema-per-tenant) |
| Enterprise customers, strict SLAs, data residency | Silo (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:
Concrete next steps for a team deciding now:
tenant_id tagging to all logs, traces, and metrics before you onboard your first customer.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:
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.
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.
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.

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.
Authoritative references for architects validating implementation details and compliance requirements:
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.
Go further
Don't let your tech watch stop here. Explore our other resources to master your technology stack.
DevelopmentUnderstand the key differences between a prototype and an MVP. Learn how to choose the right approach to validate your product ideas effectively.
DevelopmentMaster software project estimation with proven methods. Use a practical guide to create accurate, defensible estimates and improve team efficiency.
DevelopmentRecruiting a CTO at idea stage is nearly impossible. The real path observed across 265 projects: agency first, CTO next.