Everyone Can Learn Program
中文 Start learning
Specialty · System design Free to read

System Design tutorial

Estimate the load, then cache, shard, rate-limit and queue: the building blocks of systems that stay up, each one coded and tested.

5 lessonsabout 8 h Learn first: Python from Zero, Data Structures and Algorithms
Learn it by doing

The interactive course has the same lessons with an editor next to them: run every example, answer the quizzes and solve exercises that are checked the moment you submit. Free to start, no sign-up.

Start the interactive course
1

Size and speed

Estimate load and storage; speed up reads with a cache.
1 Back-of-the-envelope estimatesHow many servers does an app with a million users need?2 CachingHow do you make a slow database feel fast?
2

Spreading the load

Shard with consistent hashing, limit rates, and queue and retry safely.
3 Load balancing and consistent hashingHow do you spread data over many servers, and add one without chaos?4 Rate limitingHow do you stop one client from flooding your API?5 Queues, retries and idempotencyWhat happens when requests arrive faster than you can handle them?