System Design Resources
Primary sources first. Every claim in a lesson should trace to something on this list.
Knowledge — Primary sources (papers & first-party engineering blogs)
- Paper: "Scaling Memcache at Facebook" — Nishtala et al., USENIX NSDI '13 How Facebook turned memcached into a global look-aside cache. Use for: cache invalidation, leases/thundering herd, replication lag across regions, read-your-writes (remote markers). Source for Lesson 0001.
- Paper: "Dynamo: Amazon's Highly Available Key-value Store" — DeCandia et al., SOSP '07 The availability-over-consistency argument, made by the people who paid for it. Use for: quorums, vector clocks, consistent hashing, "always writeable" design.
- Notion: "Herding elephants: lessons learned from sharding Postgres" A single Postgres split into 480 logical shards, with a 5-minute downtime cutover. Use for: when to shard, choosing a partition key, double-write migrations.
- Discord: "How Discord Stores Billions of Messages" (2017)
The MongoDB → Cassandra move, the requirements list, and the
((channel_id, bucket), message_id)key design. Use for: how to choose a partition key, bounding partition size. Source for Lesson 0002. - Discord: "How Discord Stores Trillions of Messages" (2023) Why that key still failed: hot partitions and JVM GC pauses. Use for: tail latency (p99) as a design target, request coalescing, and judging when a problem belongs to the tool rather than to your use of it.
- Figma: "How Figma's databases team lived to tell the scale" Vertical partitioning first, horizontal sharding later. Use for: the cheap moves you make before sharding.
- AWS Builders' Library Short, brutally practical essays by AWS principal engineers. Use for: load shedding, health checks, avoiding fallback. The best free writing on failure modes that exists.
- AWS: "Timeouts, retries, and backoff with jitter" Picking timeouts from a latency percentile, why retries are "selfish", 243× amplification, token-bucket retry budgets, idempotency as a precondition. Source for Lesson 0004. (The old aws.amazon.com/builders-library URL now 301s here.)
- AWS: "Exponential Backoff and Jitter" — Marc Brooker (2015) The four jitter algorithms with formulas, and the simulation comparing them. Use for: what to actually implement.
- Google SRE Book Use for: SLOs and error budgets, overload handling, cascading failure, the language of reliability.
- Meta Engineering Blog · Netflix Tech Blog · Uber Engineering Blog First-party, with real numbers. Use for: sourcing the next case study. (Netflix/Uber block scripted fetches — open in a browser.)
Knowledge — Synthesis
- Book: Designing Data-Intensive Applications — Martin Kleppmann The spine of this whole topic. Chapter 5 (Replication) and 6 (Partitioning) map directly onto the early lessons. Use for: the vocabulary and the honest treatment of trade-offs.
- Lectures: Distributed Systems — Martin Kleppmann, Cambridge 8 lectures, free, rigorous. Use for: consensus, logical clocks, the theory under the blog posts.
- Jepsen: Consistency Models The canonical map of consistency guarantees and how they relate. Use for: precise definitions — this workspace defers to Jepsen's naming.
Wisdom (Communities)
- Papers We Love Chapters worldwide + an archive of paper talks. Use for: reading a paper with people who've already read it. Highest-signal option for this mission — the papers above are exactly its diet.
- r/ExperiencedDevs Use for: the org-politics half of tech-lead scope — how design docs actually get approved.
- Internal: design reviews at work The cheapest real feedback loop available. Use for: testing a lesson's idea against a system you own.
Gaps
- No verified source yet on queueing / async work at scale from a first-party blog — needed around lesson 4–6.
- No good primary source yet on API gateway / BFF patterns, relevant to a split frontend/backend codebase.
- Community participation not yet confirmed with Poonnachit — Papers We Love is proposed, not agreed.