Member-only story

System Design Concepts

Suleyman Yildirim
11 min readDec 1, 2024

--

System design is essential for building scalable and reliable systems. This blog covers capacity estimation, database modeling, and key architectural decisions like caching, sharding, and load balancing. Each chapter offers practical insights to enhance your design approach.

These insights are drawn from my notes while improving my system design skills using Grokking the System Design course and other resources.

Table Of Contents

· Capacity Estimation and Constraints
· Defining data model (DB Design)
What kind of database should we use?
· Detailed design
Data Partitioning and Replication
Data Sharding
Caching
Cache Strategies
Load Balancer
· References

Capacity Estimation and Constraints

It is always a good idea to estimate the scale of the system. This will also help later when we focus on scaling, partitioning, load balancing, and caching.

  • What scale is expected from the system?
  • How much storage will we need?
  • What network bandwidth usage are we expecting? This will be crucial in deciding how we manage traffic and balance load between servers.
  • Is your system going to be read-heavy or…

--

--

No responses yet