GuideIntermediate

System Design Fundamentals

Learn to design a distributed system from scratch and scale it with judgment, not memorized answers. This guide teaches the complete method — clarifying requirements, estimating capacity with back-of-the-envelope math, modeling data, adding caching, scaling the database, balancing load, and reasoning through reliability and consistency tradeoffs — using a single real case study from start to finish: Enlace, a URL shortener that starts as a single box and scales module by module into a full distributed design. Every number that appears is calculated and executed in Python (QPS, storage, hit ratio, consistent hashing), never quoted from memory. By the end, you can take a vague prompt like "design a URL shortener" and produce a defensible design with numbers, a diagram, and explicit tradeoffs — exactly what's expected in an architecture review or a system design technical interview.

64
lessons
8
modules
English · Spanish
available in
Free
access
NIEVA

Outcomes

What you'll be able to do

  • Turn a vague prompt into concrete functional and non-functional requirements, and scope a first design
  • Master back-of-the-envelope math: read/write QPS, multi-year storage, bandwidth, and working-set memory
  • Design the data model and generate short, unique identifiers (hashing vs. counter+base62 vs. random)
  • Add caching with judgment on the read-heavy path: cache-aside, eviction policies (LRU), hit ratio, and average latency
  • Scale a database beyond a single machine with replication (primary/replica), sharding, and consistent hashing
  • Balance load across stateless servers (round-robin, least-connections, hash-based) and decide where state lives
  • Reason through the reliability of a distributed system: redundancy, single points of failure, basic failover, CAP/PACELC, and the strong-vs-eventual consistency tradeoff
  • Design and defend a complete distributed system end to end: requirements, estimation, high-level diagram, read/write path, and a justified list of tradeoffs

Before you start

What you need to bring

It's for you if...

  • Backend devs who want to move from "writing features" to designing systems that hold up at real scale
  • Devs preparing for system design technical interviews (URL shorteners, feeds, messaging systems)
  • Anyone who needs to defend a design with numbers in an architecture review, not just intuition
  • Devs who already use caching, replicas, or load balancers by recipe and want the numerical reasoning behind each one

Requirements and materials

  • Basic Python (able to read and follow the estimation and ID-generation snippets; no advanced proficiency needed)
  • General knowledge of relational databases and HTTP/REST APIs
  • No prior experience with distributed systems or large-scale architecture design required

Content

The syllabus, module by module

Open any of them to see its lessons.

Common questions

What people usually ask

Start whenever you like

Reviews

What students say

These reviews are from enrolled students who completed at least 50% of the course. We moderate reviews only on content grounds (spam, offensive language, personal data), never for being critical or negative.

No approved reviews yet.

Be the first to share your experience!