A curated collection of essential resources, case studies, tools, courses, and playbooks to help you master System Design — from designing your first API to architecting distributed systems that scale to millions of users.
GitHub Description: A curated collection of resources, case studies, tools, and roadmaps to help you go from system design beginner to confidently architecting large-scale distributed systems.
System design is the skill that separates a good engineer from a great one.
This is a curated directory of the best system design resources for every stage of your journey — from understanding client-server architecture to designing systems like YouTube, WhatsApp, and Uber at scale. Whether you're a student preparing for FAANG interviews, an engineer leveling up, or an architect designing production systems, you'll find books, courses, case studies, tools, and communities for every level.
- Students — Preparing for SDE interviews at product companies
- Backend Engineers — Leveling up from writing code to designing systems
- Senior Engineers — Preparing for Staff / Principal interviews
- Engineering Managers — Understanding trade-offs in architectural decisions
- Founders & CTOs — Making the right architectural bets early
- Anyone who wants to think in systems, not just code
- Roadmaps — Step-by-step paths from basics to advanced
- Foundational Concepts — Networking, protocols, and distributed systems basics
- Scalability — Horizontal/vertical scaling, load balancing, and caching
- Databases — SQL vs NoSQL, sharding, replication, and CAP theorem
- Caching — Strategies, invalidation, CDN, and Redis patterns
- Messaging & Queues — Kafka, RabbitMQ, and async communication
- API Design — REST, GraphQL, gRPC, and WebSockets
- Storage & File Systems — Object storage, blob storage, and CDNs
- Microservices — Service decomposition, communication, and patterns
- Security at Scale — Auth, rate limiting, and DDoS protection
- Reliability & Availability — Fault tolerance, SLAs, and disaster recovery
- Monitoring & Observability — Metrics, logs, traces, and alerting
- Real-World Case Studies — How top companies built their systems
- Interview Prep — Frameworks, templates, and practice problems
- Books & Courses — The best learning resources
- Tools — Diagramming, load testing, and architecture tools
- Roadmaps
- Foundational Concepts
- Scalability
- Load Balancing
- Caching
- Databases
- Replication & Sharding
- CAP Theorem & Consistency
- API Design
- Messaging & Event Streaming
- Microservices Architecture
- Storage & CDN
- Search Systems
- Rate Limiting & Throttling
- Authentication & Authorization at Scale
- Reliability & Fault Tolerance
- Monitoring & Observability
- Distributed Systems Concepts
- Real-World Case Studies
- System Design Interview Prep
- Books
- Courses & Videos
- Cheat Sheets & Quick References
- Diagramming & Architecture Tools
- GitHub Repositories
- Engineering Blogs
- Newsletters & Podcasts
- Communities & Forums
- Key Articles & Essays
- Practice Problems
- Roadmap.sh - System Design
- Roadmap.sh - Software Architect
- Roadmap.sh - Backend
- Tech Interview Handbook - System Design
- System Design Roadmap - GitHub
- High Scalability Learning Path
- ByteByteGo System Design Roadmap
- Distributed Systems Learning Path - MIT
- Computer Networking - Khan Academy
- HTTP & HTTPS Explained
- HTTP/1.1 vs HTTP/2 vs HTTP/3
- TCP vs UDP
- DNS Resolution Explained
- WebSockets Explained
- Long Polling vs WebSockets vs SSE
- IP Addresses, Ports & Firewalls
- OSI Model Explained
- gRPC vs REST vs GraphQL
- Client-Server Model
- Monolith vs Microservices
- Three-Tier Architecture
- Peer-to-Peer Architecture
- Serverless Architecture
- Scalability for Dummies
- Horizontal vs Vertical Scaling
- Stateless vs Stateful Services
- The 12-Factor App
- Scale Cube - AKF Partners
- Back-of-the-Envelope Calculations
- Numbers Every Engineer Should Know
- Latency Numbers - Jeff Dean
- Web Performance Fundamentals - MDN
- TTFB, FCP, LCP Explained
- Connection Pooling
- Keep-Alive Connections
- Load Balancing Explained - Nginx
- Round Robin vs Least Connections vs IP Hash
- L4 vs L7 Load Balancing
- Consistent Hashing
- Consistent Hashing - Tom White
- Power of Two Choices
- Session Persistence / Sticky Sessions
- Caching Strategies - AWS
- Cache-Aside (Lazy Loading)
- Write-Through vs Write-Behind vs Write-Around
- Cache Eviction Policies - LRU, LFU, FIFO
- Cache Stampede / Thundering Herd
- Cache Invalidation Strategies
- Negative Caching
- Distributed Caching
- Redis (Most popular)
- Redis Data Structures
- Redis Cluster
- Memcached
- Hazelcast
- Apache Ignite
- Varnish Cache
- What is a CDN? - Cloudflare
- CDN Caching Strategies
- Cloudflare
- AWS CloudFront
- Fastly
- Akamai
- CDN vs Load Balancer
- PostgreSQL
- MySQL
- ACID Properties
- Database Indexes
- B-Tree vs Hash Indexes
- Query Optimization
- Database Normalization
- Transactions & Isolation Levels
- MongoDB
- Cassandra
- DynamoDB - AWS
- Redis
- Neo4j (Graph)
- InfluxDB (Time series)
- Elasticsearch
- HBase
- CouchDB
- Database Replication Explained
- Master-Slave vs Master-Master Replication
- Read Replicas
- Synchronous vs Asynchronous Replication
- MySQL Replication Guide
- PostgreSQL Streaming Replication
- Database Sharding - MongoDB
- Sharding Strategies - Horizontal Partitioning
- Range vs Hash vs Directory Sharding
- Resharding & Hotspot Problem
- Consistent Hashing for Sharding
- Vitess - MySQL Sharding
- CAP Theorem Explained
- CAP Theorem - Martin Kleppmann
- PACELC Theorem
- Eventual Consistency
- Strong vs Eventual vs Causal Consistency
- Jepsen Analysis - Distributed Systems Safety
- Raft Consensus Algorithm
- Paxos Simplified
- Two-Phase Commit (2PC)
- Saga Pattern for Distributed Transactions
- Vector Clocks
- Gossip Protocol
- REST API Design Best Practices
- RESTful API Design - Microsoft
- HTTP Methods & Status Codes
- API Versioning Strategies
- HATEOAS
- Pagination in REST APIs
- OpenAPI / Swagger Specification
- GraphQL Official Docs
- REST vs GraphQL
- N+1 Problem in GraphQL
- GraphQL Persisted Queries
- DataLoader for Batching
- Message Queue vs Event Streaming
- RabbitMQ
- AWS SQS
- Google Cloud Pub/Sub
- Azure Service Bus
- ActiveMQ
- NATS
- Apache Kafka
- Kafka Architecture
- Kafka Topics, Partitions, Offsets
- Kafka vs RabbitMQ
- Apache Pulsar
- Amazon Kinesis
- Confluent Cloud
- Publisher-Subscriber Pattern
- Event-Driven Architecture
- Outbox Pattern
- Dead Letter Queue
- At-Least-Once vs At-Most-Once vs Exactly-Once Delivery
- Idempotency in Message Processing
- Microservices - Martin Fowler
- Microservices Patterns - Chris Richardson
- Monolith to Microservices - Sam Newman
- Domain-Driven Design Basics
- Bounded Context
- Service Decomposition Strategies
- Synchronous vs Asynchronous Communication
- Service Discovery - Client vs Server Side
- API Gateway Pattern
- Backend for Frontend (BFF) Pattern
- Sidecar Pattern
- Strangler Fig Pattern
- Circuit Breaker Pattern
- Bulkhead Pattern
- Retry Pattern with Exponential Backoff
- Timeout Pattern
- Fallback Pattern
- Resilience4j
- AWS S3
- Google Cloud Storage
- Azure Blob Storage
- MinIO (Open source S3-compatible)
- Cloudflare R2
- Designing a Blob Storage System - ByteByteGo
- Pre-signed URLs for Secure File Uploads
- Chunked File Uploads
- Deduplication Strategies
- Elasticsearch Architecture
- Inverted Index Explained
- Apache Solr
- Meilisearch
- Typesense
- Algolia
- Full Text Search vs Vector Search
- TF-IDF & BM25 Ranking
- Designing a Search System - ByteByteGo
- Typeahead / Autocomplete Design
- Token Bucket Algorithm
- Leaky Bucket Algorithm
- Fixed Window Counter
- Sliding Window Log
- Sliding Window Counter
- Designing a Rate Limiter - ByteByteGo
- Redis Rate Limiting
- Nginx Rate Limiting
- AWS API Gateway Throttling
- Bucket4j - Java Rate Limiting
- Resilience4j Rate Limiter
- JWT - JSON Web Tokens
- JWT vs Session Tokens
- OAuth 2.0 Explained
- OpenID Connect
- SAML vs OAuth vs OIDC
- Single Sign-On (SSO)
- Multi-Factor Authentication (MFA)
- Passwordless Authentication
- RBAC vs ABAC
- Role-Based Access Control (RBAC)
- Attribute-Based Access Control (ABAC)
- Zanzibar - Google's Global Auth System
- OPA - Open Policy Agent
- SLI, SLO, SLA Explained
- Availability Numbers (9s)
- MTTR, MTBF, MTTF
- Fault Tolerance vs High Availability
- Chaos Engineering
- Disaster Recovery Planning
- Circuit Breaker
- Bulkhead
- Retry with Backoff
- Health Check Pattern
- Blue-Green Deployment
- Canary Deployment
- Feature Flags
- ELK Stack - Elasticsearch, Logstash, Kibana
- Loki + Grafana
- Fluentd
- Splunk
- Structured Logging Best Practices
- Fallacies of Distributed Computing
- The Google File System Paper
- Bigtable Paper
- Dynamo Paper - Amazon
- MapReduce Paper
- Spanner Paper - Google
- Raft Paper
- Distributed Transactions
- Idempotency
- Distributed Locking
- Leader Election
- Split Brain Problem
- Backpressure
- Clock Synchronization
- MIT 6.824 Distributed Systems
- Designing Data-Intensive Applications - Book
- Distributed Systems - Cambridge (Free Notes)
- Martin Kleppmann's Distributed Systems Course
- How WhatsApp Works - Architecture
- Twitter Timeline Architecture
- Facebook's TAO - Social Graph
- Instagram Architecture
- Discord - Storing Billions of Messages
- Slack Architecture
- LinkedIn Architecture
- Netflix Architecture
- Netflix CDN - Open Connect
- YouTube Architecture
- Spotify Architecture
- Twitch Architecture
- Uber Architecture
- Uber's Geospatial Index - H3
- Lyft Architecture
- Google Maps Architecture
- Ola's Architecture at Scale
- Google Search Architecture
- Elasticsearch at Scale
- Airbnb Architecture
- DoorDash Engineering
- Pinterest Architecture
- RESHADED Framework
- How to Approach System Design - ByteByteGo
- System Design Template
- 4-Step System Design Process
- Common Mistakes in System Design Interviews
- Back-of-the-Envelope Estimation Guide
- Latency Numbers - Jeff Dean
- Storage Estimation
- QPS Estimation
- Powers of Two Table
- Design a URL Shortener (TinyURL / Bit.ly)
- Design Twitter / X Feed
- Design WhatsApp / Messenger
- Design YouTube / Netflix
- Design Uber / Ola (Ride Sharing)
- Design Google Drive / Dropbox
- Design Instagram
- Design a Search Autocomplete System
- Design a Web Crawler
- Design a Notification System
- Design a Rate Limiter
- Design a Distributed Cache
- Design an API Gateway
- Design a Payment System
- Design a Ticketing System (BookMyShow)
- Design a Job Scheduler
- Design a Live Streaming System
- Design a Distributed Message Queue
- Design Google Maps
- Design a Leaderboard System
- Grokking System Design - Educative
- ByteByteGo
- System Design Interview - Alex Xu (Book)
- Pramp Mock Interviews
- Exponent System Design Practice
- interviewing.io
- System Design Questions - Glassdoor
- LeetCode System Design Tag
- System Design Interview Vol.1 - Alex Xu (Best for interviews)
- System Design Interview Vol.2 - Alex Xu & Sahn Lam
- Designing Data-Intensive Applications - Martin Kleppmann (Best overall)
- Building Microservices - Sam Newman
- Microservices Patterns - Chris Richardson
- Distributed Systems - Tanenbaum & Van Steen (Free)
- Understanding Distributed Systems - Roberto Vitillo
- Designing Distributed Systems - Brendan Burns
- Database Internals - Alex Petrov
- Foundations of Scalable Systems - Ian Gorton
- Clean Architecture - Robert C. Martin
- Software Architecture Patterns - Mark Richards (Free)
- Patterns of Enterprise Application Architecture - Martin Fowler
- Release It! - Michael Nygard
- The Art of Scalability - Abbott & Fisher
- Site Reliability Engineering - Google (Free)
- The SRE Workbook - Google (Free)
- Database Reliability Engineering - Haines & Campbell
- MIT 6.824 Distributed Systems (Free)
- System Design by Gaurav Sen (YouTube)
- ByteByteGo YouTube Channel
- System Design by Arpit Bhayani (YouTube)
- Concept && Coding - Shrayansh (YouTube)
- TechDummies - Narendra (YouTube)
- CodeKarle (YouTube)
- System Design by Amazon (YouTube)
- KOSS System Design (YouTube)
- Grokking Modern System Design - Educative
- ByteByteGo System Design Course
- System Design Interview Course - Exponent
- Rocking System Design - Udemy
- Distributed Systems & Cloud Computing - Udemy
- Gaurav Sen
- ByteByteGo
- Arpit Bhayani
- TechDummies Narendra
- Concept && Coding
- CodeKarle
- Martin Kleppmann
- InfoQ
- Hussein Nasser
- System Design Cheat Sheet - GitHub
- Latency Numbers Every Engineer Should Know
- Back-of-the-Envelope Estimation Cheat Sheet
- CAP Theorem Cheat Sheet
- SQL vs NoSQL Decision Chart
- Load Balancing Algorithm Summary
- Caching Strategies Summary
- Availability Numbers (Nines)
- Microservices Patterns Map
- API Design Best Practices - Microsoft
- Data Consistency Levels
- Message Delivery Guarantees
- Excalidraw (Best for whiteboard-style)
- draw.io / diagrams.net
- Lucidchart
- Miro
- Whimsical
- PlantUML
- Mermaid.js
- Structurizr (C4 model)
- C4 Model
- System Design Primer - donnemartin (270k+ stars)
- Awesome System Design
- System Design Resources - InterviewReady
- Awesome Scalability
- Distributed Systems Reading List
- ByteByteGo Newsletter Code
- System Design 101 - ByteByteGo
- Microservices Patterns - Chris Richardson
- Real World System Design
- Grokking System Design - Solutions
- Netflix Tech Blog
- Uber Engineering
- Airbnb Engineering
- Meta Engineering
- Google Research Blog
- AWS Architecture Blog
- LinkedIn Engineering
- Stripe Engineering
- Cloudflare Blog
- Discord Engineering
- Shopify Engineering
- Dropbox Tech Blog
- DoorDash Engineering
- Pinterest Engineering
- Twitter Engineering
- Slack Engineering
- GitHub Engineering
- High Scalability (Aggregates case studies)
- ByteByteGo Newsletter
- System Design Newsletter - Neo Kim
- Quastor - System Design
- Software Design - Arpit Bhayani
- The Pragmatic Engineer - Gergely Orosz
- Architecture Notes
- Level Up Software Engineering
- Pointer.io
- Software Engineering Daily
- The Changelog
- Distributed - InfoQ Podcast
- SE Radio
- Scaling DevTools
- Kubernetes Podcast
- r/ExperiencedDevs
- r/softwarearchitecture
- r/cscareerquestions
- r/SystemDesign
- Blind - Tech
- LeetCode Discuss - System Design
- High Scalability Community
- InfoQ Community
- Dev.to - System Design
- Hacker News
- The Log - Jay Kreps (LinkedIn)
- You Can't Sacrifice Partition Tolerance - CAP
- Fallacies of Distributed Computing
- A Plain English Introduction to CAP Theorem
- Microservices - Martin Fowler
- CQRS - Martin Fowler
- Event Sourcing - Martin Fowler
- The Twelve-Factor App
- C4 Model for Software Architecture
- Evolutionary Architecture - Martin Fowler
- Cell-Based Architecture - AWS
- Zero Downtime Deployments
- The Senior Engineer's Guide to Design Decisions
- Design a URL Shortener
- Design a Pastebin
- Design a Key-Value Store
- Design a Rate Limiter
- Design a Cache System
- Design a Chat Application (WhatsApp)
- Design a Social Media Feed (Twitter)
- Design a Photo Sharing App (Instagram)
- Design a File Storage System (Dropbox)
- Design a Video Streaming Service (YouTube)
- Design a Notification System
- Design a Search Autocomplete
- Design Uber / Ola
- Design a Distributed Message Queue (Kafka)
- Design a Distributed Cache (Redis)
- Design a Web Crawler
- Design Google Maps
- Design a Payment System
- Design a Live Video Streaming System (Twitch)
- Design an Ad Click Aggregation System
- Design a Hotel Booking System (MakeMyTrip)
- Design a Flight Booking System
- Design a Stock Exchange System
- Design a Distributed Job Scheduler
We welcome contributions from the community! Here's how you can help:
- Add a Resource — Found a useful library, course, or article? Submit a pull request!
- Fix Broken Links — Help keep the list current
- Improve Descriptions — Make resources easier to understand
- Suggest Categories — Help us organize better
- Ensure the resource is relevant to Python development
- Provide a working link
- Add a brief description if needed
- Place it in the appropriate category
- Check for duplicates before submitting
If you find this repository valuable and want to support its growth:
- Sponsor this project to help maintain and expand the collection
- Partner with us to feature high quality tools for founders
- Reach out for collaborations and ecosystem partnerships
For sponsorship or partnership inquiries, connect via X:
Avinash Singh
This project is licensed under the MIT License - see the LICENSE file for details.
This repository is maintained by Avinash Singh Special thanks to all contributors who have helped curate and maintain this collection.
- Star this repo to show your support
- Share it with fellow founders and entrepreneurs
- Follow for updates as we add new resources
- Join the discussion in Issues
Made with ❤️ by Avinash Singh