Implementing Multi-Tenancy

1. Configuring Tenant Isolation Strategies

ModelTrade-off
Silo (per-tenant infra)Max isolation, high cost
Pool (shared infra, logical sep)Low cost, noisy-neighbor risk
Bridge (per-tenant DB, shared app)Balanced
Row-level (RLS)Single DB + tenant_id WHERE

2. Using Tenant Identification

SourceExample
Subdomainacme.api.example.com
Path prefix/tenants/acme/orders
HeaderX-Tenant-Id: acme
JWT claimtid or tenant_id
API key prefixacme_sk_...

3. Implementing Tenant-Based Routing

Example: Subdomain-based routing

map $http_host $tenant {
  ~^(?<t>[^.]+)\.api\.example\.com$ $t;
  default                          unknown;
}

server {
  listen 443 ssl;
  server_name ~^[^.]+\.api\.example\.com$;
  location / {
    proxy_set_header X-Tenant-Id $tenant;
    proxy_pass http://backend-$tenant;
  }
}

4. Implementing Tenant Authentication

PatternDetail
Per-tenant IdPEach tenant brings own OIDC
Federated SSOSAML, OIDC discovery per tenant
Shared IdP + tenant claimOne Auth0/Cognito tenant
SCIM provisioningSync users from tenant IdP

5. Setting Up Tenant-Specific Rate Limits

TierLimit
Free100 req/min
Starter1000 req/min
Pro10000 req/min
EnterpriseCustom, contract-based

6. Configuring Tenant Data Segregation

StrategyImplementation
Schema per tenantPostgreSQL SET search_path
DB per tenantConnection-string-by-tenant
RLS policiesUSING (tenant_id = current_setting('app.tid'))
Bucket prefixs3://bucket/tenant/{tid}/...
Encryption per tenantKMS key per tenant

7. Implementing Tenant-Specific Configurations

ConfigPer-Tenant Override
Feature flagsBeta access per tenant
BrandingLogo, colors via theme API
LimitsStorage quota, seats
WebhooksTenant-managed endpoints
Webhook signing keyPer-tenant secret

8. Setting Up Tenant Billing and Metering

MetricBill By
API callsPer 1000 requests
Data transferPer GB
StoragePer GB/month
ComputePer CPU-second
Active usersMAU/DAU seats

9. Configuring Tenant Resource Quotas

QuotaEnforcement
Storage GBPre-write check
API calls/monthCounter + 429
Concurrent jobsSemaphore
Webhook endpointsCreate-time limit
SeatsSCIM provision deny

10. Using Tenant Migration Strategies

PhaseAction
1. SnapshotBackup source tenant
2. ReplicateStream changes to target
3. Cutover windowFreeze writes, final sync
4. Switch routingUpdate tenant→region map
5. VerifyChecksum, smoke test
6. DecommissionRetain backup N days