Scaling from 10K to 100K MAU — when to refactor (and when not to) Skip to content
Big Helpers
Tech Decisions

Scaling from 10K to 100K MAU — when to refactor (and when not to)

Most Indian SaaS hits the "why is everything slow now" moment between 10K and 50K MAU. Here's the order to attack it — without the premature-optimisation trap.

TL;DR — fix in this order

  1. DB query optimisation (indexes, N+1) — biggest win, lowest effort
  2. Caching layer (Redis) for hot reads
  3. Background jobs for heavy/slow ops
  4. CDN for static + media
  5. Read replicas if DB still bottlenecked
  6. Horizontal scaling (multi-server) — last, only when truly needed

What breaks first (almost always)

1. The N+1 query (90% of slowdowns)

Page that loads 10 items also fires 10 sub-queries to fetch related data. Worked at 100 users, dies at 10K. Fix with proper joins / eager-loading. Single biggest performance win for any growing app.

2. Missing indexes

Every WHERE / JOIN / ORDER BY column should be indexed. EXPLAIN ANALYZE on slow queries reveals which. 60-90% of "slow page" complaints fix here.

3. Synchronous email / webhook calls

API endpoint waits for transactional email to send → user sees 3-5s latency. Move to background queue (Sidekiq / BullMQ / Celery). Endpoint returns instantly.

What NOT to optimise yet

  • Microservices: monolith is fine to 1M MAU if structured well. Splitting prematurely 3x your devops burden.
  • Multi-region: India + US users? Single Mumbai region serves both with 200ms latency, which is fine for SaaS. Multi-region pays off only for real-time apps.
  • Custom load balancer / autoscaling: Vercel / Heroku-style PaaS handles to 100K MAU. Skip Kubernetes until you have a real need.
  • NoSQL migration: Postgres handles 100K MAU fine if indexed well. Don't switch to MongoDB / DynamoDB based on theory.

When to refactor architecture

SymptomLikely causeFix
Pages slow at 10K MAUN+1 queries, missing indexesEXPLAIN + index + eager-load
Database CPU 80%+ at 30K MAUHot reads, no cacheRedis cache + read replica
Background jobs piling upSingle worker, slow tasksMultiple workers + queue priority
Memory leaks at 50K MAULong-running process stateForking / process recycling
Deploy-time downtimeSingle instanceBlue-green deploys + load balancer

Indian-specific scaling considerations

  • UPI peak: 10am-12pm + 7-9pm see 3-5x payment volume. Cache user lookups.
  • Mobile network variance: 70% of Indian users on mobile, often on flaky 4G. Aggressive HTTP/2, lazy load, smaller payloads.
  • Tier-2/3 cities: latency to Mumbai region 30-80ms vs 10ms in Bangalore. Test on real devices in target geographies.
  • Ad-hoc Razorpay webhook bursts: when you run a campaign, expect 100x baseline webhook volume for an hour. Queue with retry.
What we offer

Performance audit + scale refactor: ₹50K-2L. Typical 6-week engagement: profile → fix top 10 bottlenecks → load-test → handover. ROI: pages 5-10x faster, infra cost often drops 20-40%. Engagement options →

Last reviewed: 27 April 2026.

Want this built for you?

Talk to Kashvi — 30-min call, honest assessment, no pitch deck.

📬 Practical India-context guides — in your inbox

One useful guide a week from Kashvi. No spam, no marketing fluff. Unsubscribe anytime.

Sources & references

Pricing in this guide is verified as of the article date. Verify with vendors before committing budget — rates change quarterly.

A little help, this way.

Language · भाषा
Reduce motion
Quiet interaction sounds
Gentle haptics

Sound and haptics are optional. Haptics depend on your device and browser. Your device’s reduced-motion setting always takes priority.

The language switch changes available bilingual text. All original language pages remain in the directory.

Find your next step.

Loading the page directory…