Sheikh Zubair
SYSTEM DESIGN

System Design Fundamentals: Where to Start

3 min read

A practical guide to approaching system design problems, covering scalability, reliability, and trade-offs.

System Design Fundamentals

System design is about making trade-offs. There’s rarely a perfect solution — only appropriate ones given constraints.

The CAP Theorem

Any distributed system can guarantee at most two of:

flowchart TD
    CAP[CAP Theorem]
    CAP --> C[Consistency]
    CAP --> A[Availability]
    CAP --> P[Partition Tolerance]
    C --> CP["CP Systems (e.g. HBase, Zookeeper)"]
    A --> AP["AP Systems (e.g. Cassandra, CouchDB)"]

Key Concepts

  • Horizontal scaling — add more machines
  • Vertical scaling — add more power to existing machines
  • Load balancing — distribute traffic evenly
  • Caching — reduce latency and database load
  • Sharding — split data across multiple databases

Further Reading