✓ Scaled from 1,200 to 10,000+ users without a rewrite
✓ Uptime lifted from 99.2% to 99.95%
✓ Deploys went from weekly to multiple times a day
Before → after
| Metric | Before | After |
|---|---|---|
| Users served | 1,200 | 10,000+ |
| Uptime | 99.2% | 99.95% |
| Deploy frequency | Weekly | Multiple/day |
A startup’s app had found product-market fit, but the codebase and infrastructure hadn’t caught up. Single-tenant, no observability, and manual deploys were already creaking at 1,200 users.
The challenge
- No multi-tenancy, each customer was a one-off deployment.
- Manual deploys that took an hour and happened once a week.
- No monitoring, so the team learned about outages from customers.
- No backups, no rollback plan, and no documented runbooks.
What we built
- Multi-tenancy refactored the app to serve all customers from one secure, isolated codebase.
- CI/CD set up automated builds and tests so every merge deploys in minutes.
- Observability wired Cloud Monitoring with dashboards, alerts, and SLOs.
- Resilience added backups, point-in-time recovery, and rollback playbooks.
- Infra as code codified everything in Terraform so the environment is reproducible.
The results
The app now serves 10,000+ users with 99.95% uptime, and the team ships multiple times a day instead of once a week. Growth stopped being a fire drill and became a non-event.
The takeaway
“Production-ready” is a set of boring, non-negotiable basics, tenancy, CI/CD, observability, and backups. Skip them and growth becomes your biggest risk.
Stack Next.jsPostgresCloud RunTerraformCloud Monitoring
“
Growth used to terrify us. Now we ship multiple times a day and sleep fine.