Overview
Most SaaS fails to scale because of unindexed queries and synchronous heavy work — not the framework. Plan the data layer first.
At 1k users
One app server and a single Postgres instance are plenty. Add indexes for your hot queries.
At 10k users
Move email/exports to workers, add a CDN, and introduce read replicas for reporting.
At 100k users
Introduce caching, shard or partition hot tables, and separate tenants by load. Monitor queue depth and DB connections.