TL;DR – APP SCALING (3-MINUTE READ)
THE HARSH TRUTH
Most engineers scale wrong.
They focus on fancy architecture (microservices, Kubernetes, etc.).
But real scaling is boring:
- ✅ Better caching
- ✅ Read replicas
- ✅ Database optimization
- ✅ Simple monitoring
Our DevOps services help you scale the right way at the right time.
THE SCALING LADDER
Stage 1: 1K Users (Startup)
- Single server
- Single database
- No caching
- Cost: $200-500/month
- Works fine
When building your app, follow our mobile app development guide to set the right foundation.
Stage 2: 10K Users (Traction)
- Multiple servers (load balanced)
- Single database with read replicas
- Redis cache
- Cost: $1K-3K/month
- Need refactoring soon
Stage 3: 100K Users (Growing)
- Multiple servers (auto-scaling)
- Database sharding
- Heavy caching (cache-aside pattern)
- CDN for assets
- Message queues
- Cost: $5K-20K/month
- Need engineering team
Stage 4: 1M Users (Scale)
- Microservices architecture
- Multi-region deployment
- Global CDN
- Sophisticated caching
- Database per service
- Cost: $50K-200K/month
- Need specialized team
Professional cloud services provide the infrastructure to handle millions of users.
THE KEY INSIGHT
Don't over-engineer for scale you don't have.
If you have 10K users, monolith is fine.
If you build microservices for 10K users, you wasted $200K.
Build for current scale, refactor when you reach next scale. BSH Technologies helps you architect applications that scale efficiently as you grow. For technology guidance, explore Node.js documentation for scalable backend architecture.
THE COST OF SCALING WRONG
If you scale wrong:
- System becomes slow at 50K users
- Customers complain
- You panic and rebuild
- Rebuild costs: $500K-2M
- Rebuild timeline: 3-6 months
- Revenue paused during rebuild
- Team morale suffers
If you scale right:
- System stays fast until 500K users
- You have time to refactor
- Refactor planned, not panicked
- Costs: $200K-500K
- Timeline: 2-3 months
- Customers don't notice
- Team has time to plan
Right scaling saves millions. Understanding the app development cost breakdown helps you budget for growth.
THREE RULES OF SCALING
Rule 1: Measure before optimizing
- What's slow? Database? API? Frontend?
- Use monitoring tools (New Relic, DataDog)
- Don't guess
Rule 2: Scale databases first
- Database is usually bottleneck
- Scale database, then everything else
- App servers scale easily
Our custom software development services build applications with scalability in mind from day one.
Rule 3: Make it boring
- Use proven patterns
- Avoid cutting-edge architecture
- Netflix uses boring (read replicas, caching, sharding)
- Netflix works for 200M users
Choosing the right technology stack from the start makes scaling easier later. Learn more about BSH Technologies and our approach to scalable architecture.
1️⃣ INTRODUCTION: THE SCALING JOURNEY
Twitter started as a side project.
In 2007, they had 1M users.
The problem: Their database was melting.
Why? They didn't optimize for scale.
They threw more servers at problem.
But the database was bottleneck.
More servers = more load on database = more problems.
The fix: Database optimization took priority.
They added caching, read replicas, eventually sharding.
Then Twitter could scale to 500M users.
The lesson: Scaling is database-first, not application-first.
Why Scaling is Hard
Scaling is hard because:
- You don't know when you need it
- Success happens fast
- Monday: 100 users
- Friday: 50K users
- No time to plan
For best practices and patterns, explore AWS Architecture Center.
- Early architecture decisions limit growth
- Built on Firebase? Can't shard
- Built with monolith? Hard to split
- Built with MySQL? Hard to scale
- Decisions made at 1K users haunt you at 100K
- Scaling requires different skills
- Building app is skill A
- Scaling app is skill B
- Different expertise needed
- Startup can't hire both
- Scaling is expensive
- Infrastructure costs increase
- Engineering time increases
- Team size increases
- Budget balloons
The Good News
With proper architecture from the start:
- ✅ You can scale to 1M+ users
- ✅ You can do it with same cost
- ✅ You can do it with smaller team
- ✅ You have time to plan transitions
This guide teaches you how. Start with a solid MVP development approach that's built to scale.
2️⃣ STAGES OF GROWTH (1K → 10K → 100K → 1M USERS)
Stage 1: 1K Users (Startup Phase)
Architecture:
- 1 web server (or serverless)
- 1 database (single instance)
- No caching
- No CDN
Example stack:
- Heroku small dyno ($50/month)
- PostgreSQL (free tier)
- No Redis
- Total: $50-100/month
Characteristics:
- Everything is simple
- Deployment is trivial
- Zero infrastructure work
- Team: 1-2 engineers fine
When to scale: When API response > 200ms
Stage 2: 10K Users (Traction Phase)
Architecture:
- Multiple web servers (load balanced)
- Database with read replicas
- Redis cache
- Basic CDN
Example stack:
- 2-3 web servers ($100-150 each)
- PostgreSQL primary + 2 read replicas ($150 each)
- Redis cache ($50/month)
- CloudFront CDN ($50-100/month)
- Total: $1K-3K/month
Characteristics:
- Database is becoming bottleneck
- Caching starts mattering
- Load balancing needed
- Monitoring important
When to scale: When database CPU > 70%
Stage 3: 100K Users (Growing Phase)
Architecture:
- 10-20 web servers (auto-scaling)
- Database sharding (multiple shards)
- Heavy caching (multi-tier)
- Global CDN
- Message queues
Example stack:
- 10 web servers with auto-scaling ($500-1K/month)
- Sharded PostgreSQL (4-8 shards, $500-2K/month)
- Redis (multi-instance, $200-500/month)
- Global CDN ($500-2K/month)
- Message queue (RabbitMQ, $200-500/month)
- Total: $5K-20K/month
Characteristics:
- Database sharding essential
- Complex deployment
- Need dedicated DevOps
- Monitoring is critical
When to scale: When shards reach capacity limits
Stage 4: 1M Users (Scale Phase)
Architecture:
- Microservices (20-50 services)
- Multiple database systems
- Global multi-region deployment
- Sophisticated caching tiers
- Event-driven architecture
Example stack:
- Kubernetes cluster with 100s nodes ($5K-20K/month)
- Multiple specialized databases ($2K-10K/month)
- Global CDN + edge computing ($2K-10K/month)
- Message brokers (Kafka, $1K-5K/month)
- Search (Elasticsearch, $1K-5K/month)
- Analytics (real-time, $1K-5K/month)
- Total: $50K-200K/month
Characteristics:
- Extreme complexity
- Need specialized team
- DevOps critical
- Every detail matters
3️⃣ DATABASE SCALING STRATEGIES
Database is usually first bottleneck.
Strategy 1: Vertical Scaling (Bigger Server)
What it is: Buy bigger server (more CPU, RAM)
Cost:
- Small database: $50/month
- Medium database: $500/month
- Large database: $2K+/month
Pros:
- ✅ Simple (no code changes)
- ✅ Works for a while
Cons:
- ❌ Eventually maxes out (physical limits)
- ❌ Very expensive ($5K-10K/month limits)
- ❌ Downtime during upgrade
- ❌ Single point of failure
Use when: 1K-10K users
Strategy 2: Read Replicas
What it is: One primary database (writes), multiple replicas (reads)
How it works:
- All writes go to primary
- Primary replicates to replicas
- All reads go to replicas
- Reads are distributed across replicas
Cost: 3x database cost (1 primary + 2 replicas)
Example:
- Primary: $500/month
- Replica 1: $500/month
- Replica 2: $500/month
- Total: $1,500/month
Pros:
- ✅ Scales read traffic well
- ✅ Simple to implement
- ✅ Works to 100K users
Cons:
- ❌ Doesn't help write traffic
- ❌ Adds complexity (cache invalidation)
- ❌ Replication lag (eventual consistency)
Use when: 10K-100K users
Strategy 3: Database Sharding
What it is: Split data across multiple databases (shards)
How it works:
- User 1-1M → Shard 1 (database 1)
- User 1M-2M → Shard 2 (database 2)
- User 2M-3M → Shard 3 (database 3)
- Each shard is independent database
Cost: 4x database cost (4 shards × $500 = $2K/month)
Pros:
- ✅ Scales both reads and writes
- ✅ Works to 1M+ users
- ✅ Better isolation (shard 1 down ≠ shard 2 down)
Cons:
- ❌ Complex to implement (code changes)
- ❌ Hard to rebalance
- ❌ Distributed transactions harder
- ❌ Query across shards is complex
Use when: 100K-1M users
Strategy 4: Microservices (Service per Domain)
What it is: Separate database per microservice
How it works:
- Users service → PostgreSQL
- Orders service → PostgreSQL
- Payments service → PostgreSQL
- Analytics service → MongoDB
- Search service → Elasticsearch
Cost: Service-specific, varies widely
Pros:
- ✅ Each service scales independently
- ✅ Can choose best database per service
- ✅ Team can own service
- ✅ Scales to billions of records
Cons:
- ❌ Extremely complex
- ❌ Operational overhead
- ❌ Distributed systems problems
- ❌ Team coordination needed
Use when: 1M+ users
✅ SCALING CHECKLIST
Before scaling:
Measurement
- Current database CPU usage < 70%
- Current API response time < 200ms
- Current database connections < max
- Bottleneck identified (is it really database?)
Before Optimization
- Database indexes optimized
- Slow queries identified and fixed
- N+1 queries eliminated
- Connection pooling implemented
Caching
- Redis cache implemented
- Cache hit rate > 80%
- Cache invalidation strategy clear
- Monitoring on cache hits/misses
Read Replicas
- Read replicas deployed (if 10K+ users)
- Replication lag acceptable (< 100ms)
- Read traffic distributed
- Failover tested
Monitoring
- Database metrics monitored (CPU, memory, connections)
- Alerts set (CPU > 70%, connections > 80%)
- Query performance monitored
- Response times trending
