| Users / Scale | System Behavior | Bounded Context Impact | Data & Traffic |
|---|---|---|---|
| 100 users | Simple service interactions, low traffic | Few bounded contexts, often combined in one service | Low data volume, simple data models |
| 10,000 users | Increased traffic, some latency visible | Bounded contexts start to separate for clarity and ownership | Moderate data growth, need for clear data boundaries |
| 1 million users | High traffic, latency critical, failures visible | Strict bounded contexts with independent teams and databases | Large data volume, data duplication minimized, APIs well defined |
| 100 million users | Massive scale, global distribution, complex failures | Bounded contexts deployed globally, event-driven communication | Huge data scale, sharding and CQRS patterns applied |
Bounded context concept in Microservices - Scalability & System Analysis
At small scale, mixing multiple domains in one service causes confusion and slow development.
At medium scale, tightly coupled data models across contexts cause database contention and slow queries.
At large scale, cross-context synchronous calls increase latency and risk cascading failures.
Thus, the first bottleneck is the lack of clear bounded context separation leading to data and service coupling.
- Define clear bounded contexts: Separate domains into independent microservices with own data stores.
- Use asynchronous communication: Event-driven messaging reduces tight coupling and latency.
- Database per context: Avoid shared databases to reduce contention and improve scalability.
- API contracts: Well-defined interfaces prevent breaking changes and enable independent deployments.
- Data replication and CQRS: Use read models and event sourcing to scale read-heavy operations.
- Team ownership: Assign teams to bounded contexts to improve focus and velocity.
Assuming 1 million users with 1 request per second each:
- Total requests: ~1 million QPS
- Single server handles ~5,000 QPS → Need ~200 servers for API layer
- Database per bounded context handles ~10,000 QPS → Need read replicas and sharding
- Data storage: If each user generates 1 KB per day, 1M users → ~1 GB/day per context
- Network bandwidth: 1 million QPS x 1 KB = ~1 GB/s → Requires load balancers and CDN for static content
Start by explaining what bounded contexts are and why they matter.
Describe how mixing domains causes scaling and maintenance problems.
Discuss how separating contexts reduces coupling and improves scalability.
Explain bottlenecks at different scales and how asynchronous communication and database separation help.
Conclude with team organization and deployment independence as key benefits.
Your database handles 1000 QPS. Traffic grows 10x. What do you do first?
Answer: Identify if the database is shared across multiple domains. If yes, split the system into bounded contexts with separate databases to reduce contention. Also, add read replicas and introduce caching to handle increased load.