Related topics
Scalability
Scalability is the ability of a system to handle increasing amounts of work by adding resources. As user bases grow and data volumes expand, systems that were once performant can become bottlenecks. Understanding scalability means knowing how to evolve an architecture so it continues to meet demand without requiring a complete redesign.
There are two fundamental directions for scaling: vertical (adding more power to existing machines) and horizontal (adding more machines). Each approach has distinct cost profiles, complexity trade-offs, and failure characteristics. In practice, most production systems use a combination of both, and knowing when to apply each strategy is a critical skill.
This topic also covers how databases scale independently from application servers, how data can be split across multiple nodes through partitioning, and what recurring patterns appear in systems that need to grow reliably. These concepts are central to nearly every system design interview question and real-world architecture decision.
What You'll Learn
- Horizontal vs Vertical Scaling - The trade-offs between scaling up (bigger machines) and scaling out (more machines), and when each approach is appropriate
- Database Scaling - Techniques for scaling the data layer, including read replicas, connection pooling, and write distribution
- Data Partitioning - How to split data across multiple nodes using sharding strategies (hash-based, range-based, geographic) and manage the resulting complexity
- Scaling Patterns - Recurring architectural patterns (stateless services, async processing, caching layers) that enable systems to grow gracefully
Prerequisites
A solid understanding of the topics in 01-fundamentals, particularly load balancing, databases, and networking. Familiarity with basic database operations (reads, writes, indexes) is especially helpful.