Prepare for system design interviews by studying real-world architectural patterns and trade-offs.
Learn how companies like Google and Amazon design databases, caching layers, and load balancers at scale.
Build a mental model of distributed systems concepts like consensus, replication, and rate limiting before designing your own.
Reference best practices for messaging systems, service meshes, and monitoring when architecting a new backend.
This repository is a curated reading list of resources for learning about system design, the discipline of planning how large-scale software systems are built to be reliable, fast, and able to handle many users at once. It is organized as a table of contents with links to articles, blog posts, research papers, and videos grouped by topic. Topics covered include video processing at scale, cluster and workflow management, messaging systems (and common pitfalls when using databases as message queues), service meshes (a way of managing communication between parts of a system), distributed file storage, time-series databases, rate limiting, in-memory databases, network protocols, collaborative document editing, API design, database replication, containers, load balancing, logging, metrics, caching, distributed consensus (how multiple computers agree on a value), authorization, content delivery networks, and testing distributed systems, among others. The linked resources draw from engineering blogs of large technology companies alongside academic papers and community explanations. It is intended as a study guide rather than original content, a starting point for people preparing for technical interviews or broadening their understanding of how production systems work at scale.
Generated 2026-05-18 · Model: sonnet-4-6 · Verify against the repo before relying on details.