This repository contains free resources to learn System Design concepts and prepare for interviews. πŸ‘‰ Subscribe to my [AlgoMaster Newsletter](https://bit.ly/amghsd) and get a **FREE System Design Interview Handbook** in your inbox. βœ… If you are new to System Design, start here: [System Design was HARD until I Learned these 30 Concepts](https://blog.algomaster.io/p/30-system-design-concepts) ## βš™οΈ Core Concepts - [Scalability](https://algomaster.io/learn/system-design/scalability) - [Availability](https://algomaster.io/learn/system-design/availability) - [CAP Theorem](https://blog.algomaster.io/p/cap-theorem-explained) - [Consistent Hashing](https://blog.algomaster.io/p/consistent-hashing-explained) - [SPOF](https://blog.algomaster.io/p/system-design-how-to-avoid-single-point-of-failures) - [Failover](https://www.druva.com/glossary/what-is-a-failover-definition-and-related-faqs) - [Fault Tolerance](https://www.cockroachlabs.com/blog/what-is-fault-tolerance/) ## 🌐 Networking Fundamentals - [OSI Model](https://algomaster.io/learn/system-design/osi) - [IP Addresses](https://algomaster.io/learn/system-design/ip-address) - [Domain Name System (DNS)](https://blog.algomaster.io/p/how-dns-actually-works) - [Proxy vs Reverse Proxy](https://blog.algomaster.io/p/proxy-vs-reverse-proxy-explained) - [HTTP/HTTPS](https://algomaster.io/learn/system-design/http-https) - [TCP vs UDP](https://algomaster.io/learn/system-design/tcp-vs-udp) - [Load Balancing](https://blog.algomaster.io/p/load-balancing-algorithms-explained-with-code) - [Checksums](https://algomaster.io/learn/system-design/checksums) ## πŸ”Œ API Fundamentals - [APIs](https://algomaster.io/learn/system-design/what-is-an-api) - [API Gateway](https://blog.algomaster.io/p/what-is-an-api-gateway) - [WebSockets](https://blog.algomaster.io/p/websockets) - [Webhooks](https://algomaster.io/learn/system-design/webhooks) - [Idempotency](https://algomaster.io/learn/system-design/idempotency) - [Rate limiting](https://blog.algomaster.io/p/rate-limiting-algorithms-explained-with-code) - [API Design](https://abdulrwahab.medium.com/api-architecture-best-practices-for-designing-rest-apis-bf907025f5f) ## πŸ—„οΈ Database Fundamentals - [ACID Transactions](https://algomaster.io/learn/system-design/acid-transactions) - [SQL vs NoSQL](https://algomaster.io/learn/system-design/sql-vs-nosql) - [Database Indexes](https://algomaster.io/learn/system-design/indexing) - [Database Sharding](https://algomaster.io/learn/system-design/sharding) - [Data Replication](https://redis.com/blog/what-is-data-replication/) - [Database Scaling](https://blog.algomaster.io/p/system-design-how-to-scale-a-database) - [Databases Types](https://blog.algomaster.io/p/15-types-of-databases) - [Bloom Filters](https://algomaster.io/learn/system-design/bloom-filters) - [Database Architectures](https://www.mongodb.com/developer/products/mongodb/active-active-application-architectures/) ## ⚑ Caching Fundamentals - [Caching 101](https://algomaster.io/learn/system-design/what-is-caching) - [Caching Strategies](https://algomaster.io/learn/system-design/caching-strategies) - [Cache Eviction Policies](https://blog.algomaster.io/p/7-cache-eviction-strategies) - [Distributed Caching](https://blog.algomaster.io/p/distributed-caching) - [Content Delivery Network (CDN)](https://algomaster.io/learn/system-design/content-delivery-network-cdn) ## πŸ”„ Asynchronous Communication - [Pub/Sub](https://algomaster.io/learn/system-design/pub-sub) - [Message Queues](https://algomaster.io/learn/system-design/message-queues) - [Change Data Capture (CDC)](https://algomaster.io/learn/system-design/change-data-capture-cdc) ## 🧩 Distributed System and Microservices - [HeartBeats](https://blog.algomaster.io/p/heartbeats-in-distributed-systems) - [Service Discovery](https://blog.algomaster.io/p/service-discovery-in-distributed-systems) - [Consensus Algorithms](https://medium.com/@sourabhatta1819/consensus-in-distributed-system-ac79f8ba2b8c) - [Distributed Locking](https://martin.kleppmann.com/2016/02/08/how-to-do-distributed-locking.html) - [Microservices Guidelines](https://newsletter.systemdesign.one/p/netflix-microservices) - [Gossip Protocol](http://highscalability.com/blog/2023/7/16/gossip-protocol-explained.html) - [Circuit Breaker](https://medium.com/geekculture/design-patterns-for-microservices-circuit-breaker-pattern-276249ffab33) - [Disaster Recovery](https://cloud.google.com/learn/what-is-disaster-recovery) - [Distributed Tracing](https://www.dynatrace.com/news/blog/what-is-distributed-tracing/) ## πŸ–‡οΈ Architectural Patterns - [Client-Server Architecture](https://algomaster.io/learn/system-design/client-server-architecture) - [Microservices Architecture](https://medium.com/hashmapinc/the-what-why-and-how-of-a-microservices-architecture-4179579423a9) - [Serverless Architecture](https://blog.algomaster.io/p/2edeb23b-cfa5-4b24-845e-3f6f7a39d162) - [Event-Driven Architecture](https://www.confluent.io/learn/event-driven-architecture/) - [Peer-to-Peer (P2P) Architecture](https://www.spiceworks.com/tech/networking/articles/what-is-peer-to-peer/) ## βš–οΈ System Design Tradeoffs - [Top 15 Tradeoffs](https://blog.algomaster.io/p/system-design-top-15-trade-offs) - [Vertical vs Horizontal Scaling](https://algomaster.io/learn/system-design/vertical-vs-horizontal-scaling) - [Concurrency vs Parallelism](https://blog.algomaster.io/p/concurrency-vs-parallelism) - [Long Polling vs WebSockets](https://blog.algomaster.io/p/long-polling-vs-websockets) - [Batch vs Stream Processing](https://blog.algomaster.io/p/batch-processing-vs-stream-processing) - [Stateful vs Stateless Design](https://blog.algomaster.io/p/stateful-vs-stateless-architecture) - [Strong vs Eventual Consistency](https://blog.algomaster.io/p/strong-vs-eventual-consistency) - [Read-Through vs Write-Through Cache](https://blog.algomaster.io/p/59cae60d-9717-4e20-a59e-759e370db4e5) - [Push vs Pull Architecture](https://blog.algomaster.io/p/af5fe2fe-9a4f-4708-af43-184945a243af) - [REST vs RPC](https://blog.algomaster.io/p/106604fb-b746-41de-88fb-60e932b2ff68) - [Synchronous vs. asynchronous communications](https://blog.algomaster.io/p/aec1cebf-6060-45a7-8e00-47364ca70761) - [Latency vs Throughput](https://aws.amazon.com/compare/the-difference-between-throughput-and-latency/) ## βœ… [How to Answer a System Design Interview Problem](https://algomaster.io/learn/system-design-interviews/answering-framework) ## πŸ’» System Design Interview Problems ### Easy - [Design URL Shortener like TinyURL](https://algomaster.io/learn/system-design-interviews/design-url-shortener) - [Design Autocomplete for Search Engines](https://algomaster.io/learn/system-design-interviews/design-instagram) - [Design Load Balancer](https://algomaster.io/learn/system-design-interviews/design-load-balancer) - [Design Content Delivery Network (CDN)](https://www.youtube.com/watch?v=8zX0rue2Hic) - [Design Parking Garage](https://www.youtube.com/watch?v=NtMvNh0WFVM) - [Design Vending Machine](https://www.youtube.com/watch?v=D0kDMUgo27c) - [Design Distributed Key-Value Store](https://www.youtube.com/watch?v=rnZmdmlR-2M) - [Design Distributed Cache](https://www.youtube.com/watch?v=iuqZvajTOyA) - [Design Authentication System](https://www.youtube.com/watch?v=uj_4vxm9u90) - [Design Unified Payments Interface (UPI)](https://www.youtube.com/watch?v=QpLy0_c_RXk) ### Medium - [Design WhatsApp](https://algomaster.io/learn/system-design-interviews/design-whatsapp) - [Design Spotify](https://algomaster.io/learn/system-design-interviews/design-spotify) - [Design Instagram](https://algomaster.io/learn/system-design-interviews/design-instagram) - [Design Notification Service](https://algomaster.io/learn/system-design-interviews/design-notification-service) - [Design Distributed Job Scheduler](https://blog.algomaster.io/p/design-a-distributed-job-scheduler) - [Design Tinder](https://www.youtube.com/watch?v=tndzLznxq40) - [Design Facebook](https://www.youtube.com/watch?v=9-hjBGxuiEs) - [Design Twitter](https://www.youtube.com/watch?v=wYk0xPP_P_8) - [Design Reddit](https://www.youtube.com/watch?v=KYExYE_9nIY) - [Design Netflix](https://www.youtube.com/watch?v=psQzyFfsUGU) - [Design Youtube](https://www.youtube.com/watch?v=jPKTo1iGQiE) - [Design Google Search](https://www.youtube.com/watch?v=CeGtqouT8eA) - [Design E-commerce Store like Amazon](https://www.youtube.com/watch?v=EpASu_1dUdE) - [Design TikTok](https://www.youtube.com/watch?v=Z-0g_aJL5Fw) - [Design Shopify](https://www.youtube.com/watch?v=lEL4F_0J3l8) - [Design Airbnb](https://www.youtube.com/watch?v=YyOXt2MEkv4) - [Design Rate Limiter](https://www.youtube.com/watch?v=mhUQe4BKZXs) - [Design Distributed Message Queue like Kafka](https://www.youtube.com/watch?v=iJLL-KPqBpM) - [Design Flight Booking System](https://www.youtube.com/watch?v=qsGcfVGvFSs) - [Design Online Code Editor](https://www.youtube.com/watch?v=07jkn4jUtso) - [Design an Analytics Platform (Metrics & Logging)](https://www.youtube.com/watch?v=kIcq1_pBQSY) - [Design Payment System](https://www.youtube.com/watch?v=olfaBgJrUBI) - [Design a Digital Wallet](https://www.youtube.com/watch?v=4ijjIUeq6hE) ### Hard - [Design Location Based Service like Yelp](https://www.youtube.com/watch?v=M4lR_Va97cQ) - [Design Uber](https://www.youtube.com/watch?v=umWABit-wbk) - [Design Food Delivery App like Doordash](https://www.youtube.com/watch?v=iRhSAR3ldTw) - [Design Google Docs](https://www.youtube.com/watch?v=2auwirNBvGg) - [Design Google Maps](https://www.youtube.com/watch?v=jk3yvVfNvds) - [Design Zoom](https://www.youtube.com/watch?v=G32ThJakeHk) - [Design Distributed Counter](https://systemdesign.one/distributed-counter-system-design/) - [Design File Sharing System like Dropbox](https://www.youtube.com/watch?v=U0xTu6E2CT8) - [Design Ticket Booking System like BookMyShow](https://www.youtube.com/watch?v=lBAwJgoO3Ek) - [Design Distributed Web Crawler](https://www.youtube.com/watch?v=BKZxZwUgL3Y) - [Design Code Deployment System](https://www.youtube.com/watch?v=q0KGYwNbf-0) - [Design Distributed Cloud Storage like S3](https://www.youtube.com/watch?v=UmWtcgC96X8) - [Design Distributed Locking Service](https://www.youtube.com/watch?v=v7x75aN9liM) - [Design Slack](https://systemdesign.one/slack-architecture/) - [Design Live Comments](https://systemdesign.one/live-comment-system-design/) ## πŸ“‡ Courses - [Master System Design](https://algomaster.io/learn/system-design/what-is-system-design) ## πŸ“š Books - [Designing Data-Intensive Applications](https://www.amazon.in/dp/9352135245) ## πŸ“© Newsletters - [AlgoMaster Newsletter](https://blog.algomaster.io/) ## πŸ“Ί YouTube Channels - [Tech Dummies Narendra L](https://www.youtube.com/@TechDummiesNarendraL) - [Gaurav Sen](https://www.youtube.com/@gkcs) - [codeKarle](https://www.youtube.com/@codeKarle) - [ByteByteGo](https://www.youtube.com/@ByteByteGo) - [System Design Interview](https://www.youtube.com/@SystemDesignInterview) - [sudoCODE](https://www.youtube.com/@sudocode) - [Success in Tech](https://www.youtube.com/@SuccessinTech/videos) ## πŸ“œ Must-Read Engineering Articles - [How Discord stores trillions of messages](https://discord.com/blog/how-discord-stores-trillions-of-messages) - [Building In-Video Search at Netflix](https://netflixtechblog.com/building-in-video-search-936766f0017c) - [How Canva scaled Media uploads from Zero to 50 Million per Day](https://www.canva.dev/blog/engineering/from-zero-to-50-million-uploads-per-day-scaling-media-at-canva/) - [How Airbnb avoids double payments in a Distributed Payments System](https://medium.com/airbnb-engineering/avoiding-double-payments-in-a-distributed-payments-system-2981f6b070bb) - [Stripe’s payments APIs - The first 10 years](https://stripe.com/blog/payment-api-design) - [Real time messaging at Slack](https://slack.engineering/real-time-messaging/) ## πŸ—žοΈ Must-Read Distributed Systems Papers - [Paxos: The Part-Time Parliament](https://lamport.azurewebsites.net/pubs/lamport-paxos.pdf) - [MapReduce: Simplified Data Processing on Large Clusters](https://research.google.com/archive/mapreduce-osdi04.pdf) - [The Google File System](https://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) - [Dynamo: Amazon’s Highly Available Key-value Store](https://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf) - [Kafka: a Distributed Messaging System for Log Processing](https://notes.stephenholiday.com/Kafka.pdf) - [Spanner: Google’s Globally-Distributed Database](https://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) - [Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) - [ZooKeeper: Wait-free coordination for Internet-scale systems](https://www.usenix.org/legacy/event/usenix10/tech/full_papers/Hunt.pdf) - [The Log-Structured Merge-Tree (LSM-Tree)](https://www.cs.umb.edu/~poneil/lsmtree.pdf) - [The Chubby lock service for loosely-coupled distributed systems](https://static.googleusercontent.com/media/research.google.com/en//archive/chubby-osdi06.pdf) ---

If you find this resource helpful, please give it a star ⭐️ and share it with others!