Multi-tenant SaaS ERP
EnterpriseAdvancedEnterprise SaaSMulti-tenant ERP platform with per-tenant schema isolation, shared API gateway, RBAC via Redis cache, and batch worker for reports and reconciliation. Use for B2B SaaS platforms.
Recommended for: B2B platforms with strict tenant isolation
Scope Notes
Intended for B2B platforms with strict tenant isolation at Advanced complexity and Enterprise SaaS scope. Treat the graph as a starting shape rather than a fixed stack: keep the topology and the signals below, then swap providers to match your platform.
Review Checklist
Use Case
B2B SaaS platforms, accounting systems, HR tools, inventory management across organisations
Best Fit Scenarios
- Finance and operations SaaS
- Per-tenant compliance boundaries
- Heavy report generation workloads
Stack Breakdown
Architecture Layers
Components by Category
frontend
backend
async
database
infra
Why This Topology Works
Tenant context is resolved at the gateway and every query runs against a per-tenant schema, so isolation is structural rather than application-level. Reports run in a batch worker separated from live traffic, and Redis caches RBAC decisions.
Scaling Notes
Per-tenant schemas keep data isolated; Core ERP and the batch worker scale independently. S3 stores generated reports and documents outside the database.
Observability
Track queries and batch duration per tenant, plus cache hit rate on RBAC decisions. Watch for schema drift between tenants as migrations roll out.
Typical Bottlenecks
- Noisy-neighbour load on the shared database
- Long-running report generation competing with live queries
- Schema migration fan-out across every tenant
Async Flow and Reliability
Interactive ERP operations are synchronous; report generation and reconciliation are queued to the batch worker and their artefacts land in S3 rather than blocking the request path.
Upgrade Path
Add an explicit identity provider that resolves the tenant claim, give RBAC a PostgreSQL source of truth instead of Redis-only state, and add per-tenant rate limits at the gateway.