Skip to content
Starone

Solution

Multi-tenant SaaS platforms engineered for isolation and scale

We build the platform beneath a SaaS product: the tenancy model, identity, billing, onboarding and release machinery that decide whether the product can serve its hundredth customer as safely as its first.

The problem space

A SaaS product is two systems. One is the application customers see. The other is the platform that provisions tenants, authenticates their users, enforces their plan, meters their usage, bills them and keeps their data apart from everyone else's. The second system is rarely on a roadmap, and it is the one that determines unit economics, enterprise readiness and how painful growth becomes.

The foundational decision is the tenancy model. In a pool model all tenants share compute and storage, which is efficient and simple to operate but demands strict logical isolation. In a silo model each tenant has dedicated resources, which isolates well and costs more to run and release. A bridge model mixes the two, commonly shared compute with separate databases or schemas, or pooled infrastructure for standard plans with dedicated stacks for the largest customers. Each choice has consequences for cost, compliance conversations, noisy-neighbour risk and deployment complexity.

We design the platform so the tenancy decision is explicit, enforced in code and reversible where it reasonably can be. Tenant context is established once at the edge and carried through every service, query, cache key, queue message and log line. Everything else in the platform builds on that guarantee.

Why it is hard

Engineering challenges

01

Tenant isolation that depends on developer discipline

If isolation relies on every query remembering a tenant filter, one missed clause exposes one customer's data to another. This is the most damaging failure a SaaS product can have. Isolation must be enforced beneath the application code, through row-level security, scoped credentials or separate stores, so that a forgotten filter returns nothing instead of everything.

02

Noisy neighbours

In shared infrastructure one tenant's bulk import or runaway report can exhaust database connections and degrade service for all others. Without per-tenant rate limits, quotas and workload separation, the largest customer sets the experience for the smallest.

03

Enterprise identity requirements

Enterprise buyers expect SAML or OIDC single sign-on, SCIM provisioning, enforced multi-factor authentication and role mapping from their directory. Retrofitting these onto a home-grown username and password table is slow and error-prone, and it tends to arrive as a blocker during a procurement review.

04

Metering that disagrees with invoices

Usage-based pricing needs every billable event counted exactly once. Events that are dropped under load, double-counted on retry or attributed to the wrong period produce invoices customers dispute. Metering is a data-integrity problem before it is a billing integration.

05

Releases across many tenants

A schema migration that locks a large table takes every tenant offline at once. With siloed tenants the problem inverts: hundreds of stacks drift to different versions. Both need a deliberate release design covering backward-compatible migrations, progressive rollout and automated fleet management.

06

No per-tenant view of health

Aggregate dashboards hide the fact that one tenant has had failing requests for an hour. Support cannot answer a customer's question, and engineering cannot tell a platform fault from a tenant-specific one. Telemetry has to carry tenant identity from the first request.

How we build it

Architecture

The platform is split into a control plane that manages tenants and a data plane that serves them. Tenant context is resolved once at the edge and enforced at every layer below it.

  1. 01

    Control plane

    A set of services owns the tenant lifecycle: sign-up, provisioning, plan assignment, configuration, suspension and offboarding. Provisioning is an idempotent workflow, so a failure halfway through can be retried without leaving a half-created tenant. The control plane is the single source of truth for which tenants exist and where their resources live.

  2. 02

    Tenant resolution and isolation layer

    The tenant is identified from a verified token claim or domain at the gateway and propagated as request context. In a pooled PostgreSQL design, row-level security policies bind every query to that tenant; in bridge and silo designs a routing layer selects the tenant's schema, database or cluster. Cache keys, object-storage prefixes and message topics are scoped the same way.

  3. 03

    Identity and access

    Authentication is delegated to a standards-based identity provider that supports per-tenant SSO connections over SAML and OIDC, SCIM provisioning and configurable MFA policy. Authorisation is role-based with tenant-scoped roles, evaluated in a central policy component so rules are consistent across services. Platform staff access to tenant data is separately controlled, time-bound and logged.

  4. 04

    Metering and billing

    Services emit usage events with idempotency keys to a durable stream. An aggregation pipeline deduplicates and rolls them up per tenant and billing period, and the totals are pushed to a billing provider that handles invoicing, tax and payment collection. The raw events are retained so any invoice line can be reconstructed and explained.

  5. 05

    Entitlements and feature flags

    Plans are expressed as entitlements: which features a tenant has, and what limits apply. Services query an entitlement service, with local caching, instead of hard-coding plan names. Feature flags are a separate mechanism used for progressive rollout, so releasing code and enabling a capability for a customer are independent decisions.

  6. 06

    Release and migration pipeline

    Deployments are rolling or blue-green with automated health checks and rollback. Schema changes follow the expand and contract pattern, so old and new application versions run against the same database during a rollout. For siloed tenants, infrastructure as code and a fleet orchestrator apply changes in waves, starting with internal and low-risk tenants.

  7. 07

    Per-tenant observability

    Logs, metrics and traces carry a tenant identifier, which allows service-level objectives, error rates and cost to be reported per tenant. Quotas and rate limits are enforced at the gateway and at shared resources such as connection pools and queues. Alerts fire on tenant-level degradation, not only on platform-wide averages.

Multi-tenant SaaS architecture
  1. Tenant-aware Edge

    • Custom domains
    • Tenant resolution
    • WAF
    • Per-tenant rate limits
  2. Identity & SSO

    • SAML and OIDC
    • SCIM provisioning
    • Roles and permissions
    • MFA
  3. Control Plane

    Manages tenants, never serves their traffic

    • Tenant lifecycle
    • Plans and entitlements
    • Billing and metering
    • Feature flags
  4. Application Plane

    • Stateless services
    • Background jobs
    • Tenant context
    • Webhooks
  5. Data Isolation

    Isolation model chosen per plan tier

    • Row-level security
    • Schema per tenant
    • Dedicated databases
    • Per-tenant keys
  6. Per-tenant Observability

    • Usage metrics
    • Tenant-tagged traces
    • Noisy-neighbour alerts
    • Audit logs
A control plane manages tenants, plans and billing, while the application plane serves them. Tenant identity is resolved at the edge and carried through every layer down to the data store and the telemetry.

What an engagement delivers

  • Tenancy model decision record with cost and isolation analysis
  • Control plane with automated tenant provisioning and offboarding
  • Identity integration covering SSO, SCIM, MFA and role-based access
  • Usage metering pipeline and billing provider integration
  • Entitlement service and feature-flag framework
  • Zero-downtime deployment and schema migration pipeline
  • Per-tenant dashboards, quotas and alerting

Before you start

Decisions to make early

Pool, silo or bridge
Default to a pooled model with isolation enforced in the database when tenants are numerous and similar; it is the cheapest to run and the simplest to release. Choose silo when customers require dedicated infrastructure, their own encryption keys or a specific region, and price for it. A bridge model, pooled by default with the option to place a tenant on dedicated resources, suits products that sell to both small teams and large enterprises.
Build or buy identity and billing
Buy both unless they are your product. A managed identity provider and a billing platform encode years of edge cases in protocols, tax and payment failure handling. Build the parts that are specific to you: the tenant model, the entitlement logic and the metering pipeline that feeds billing.
Modular monolith or microservices
Early-stage platforms are usually better served by a well-structured modular monolith with clear module boundaries and one deployment. Split out a service when a module has a distinct scaling profile, release cadence or team. Starting with many services multiplies operational work before there is the traffic or headcount to justify it.
When to offer single-tenant deployments
Offer them when a customer's requirement cannot be met by logical isolation and the contract value covers the operating cost. Make sure provisioning and upgrades for dedicated stacks are fully automated first. Hand-built single-tenant environments are how a SaaS company quietly becomes a hosting business.

FAQ

Common questions

Can an existing single-tenant product be made multi-tenant?

Usually, and the work is larger than adding a tenant column. It involves introducing tenant context throughout the request path, enforcing isolation in the data layer, migrating existing customers' data and reworking background jobs, caches and file storage. We normally stage it, starting with an isolation layer and the control plane, then migrating tenants in groups.

How do you prove tenant isolation works?

By testing it as a security property. Automated tests attempt cross-tenant reads and writes through every API and are run in the delivery pipeline. Database policies are reviewed and tested independently of application code, and isolation is included in the scope of penetration testing.

Does zero-downtime release cover database changes?

It can, with discipline. Changes are split into backward-compatible steps: add the new structure, write to both, backfill, switch reads, then remove the old structure in a later release. Operations that would lock large tables are run with online migration tooling or in batches.

Which cloud do you build on?

The design is not tied to one provider. We work with the major public clouds and choose managed services where they reduce operating burden. The choice generally follows your existing footprint, data-residency requirements and the skills of the team that will run the platform.

Have a system that needs to work in production?

Tell us what you are building. An engineer will read it and reply within two working days.