# System Design Primer ## Docs - [Anki flashcards](https://mintlify.wiki/donnemartin/system-design-primer/anki-flashcards.md): Use spaced repetition to help you retain key system design concepts - [Application Layer](https://mintlify.wiki/donnemartin/system-design-primer/components/application-layer.md): Understanding application layer architecture, microservices, and service discovery - [Asynchronism](https://mintlify.wiki/donnemartin/system-design-primer/components/asynchronism.md): Understanding asynchronous workflows, message queues, task queues, and back pressure - [Caching](https://mintlify.wiki/donnemartin/system-design-primer/components/cache.md): Understanding caching strategies including cache-aside, write-through, write-behind, and refresh-ahead - [Content Delivery Network (CDN)](https://mintlify.wiki/donnemartin/system-design-primer/components/cdn.md): Understanding CDN architecture, push vs pull CDNs, and their trade-offs - [Communication Protocols](https://mintlify.wiki/donnemartin/system-design-primer/components/communication.md): Understanding TCP, UDP, RPC, and REST for system communication - [Database Overview](https://mintlify.wiki/donnemartin/system-design-primer/components/database.md): Overview of database systems including RDBMS, NoSQL, and SQL vs NoSQL considerations - [Domain Name System (DNS)](https://mintlify.wiki/donnemartin/system-design-primer/components/dns.md): Understanding DNS architecture, record types, routing methods, and trade-offs - [Load Balancer](https://mintlify.wiki/donnemartin/system-design-primer/components/load-balancer.md): Understanding load balancing, Layer 4 vs Layer 7, horizontal scaling, and trade-offs - [Reverse Proxy (Web Server)](https://mintlify.wiki/donnemartin/system-design-primer/components/reverse-proxy.md): Understanding reverse proxies, their benefits, and comparison with load balancers - [Security](https://mintlify.wiki/donnemartin/system-design-primer/components/security.md): Security considerations for system design including encryption, input sanitization, and best practices - [NoSQL Databases](https://mintlify.wiki/donnemartin/system-design-primer/database/nosql.md): Explore NoSQL database types including key-value stores, document stores, wide column stores, and graph databases - [Relational Database Management Systems (RDBMS)](https://mintlify.wiki/donnemartin/system-design-primer/database/rdbms.md): Learn about ACID properties, replication patterns, scaling techniques, and SQL optimization for relational databases - [SQL vs NoSQL](https://mintlify.wiki/donnemartin/system-design-primer/database/sql-vs-nosql.md): Understand when to use SQL or NoSQL databases based on your application requirements and data characteristics - [How to Approach a System Design Interview](https://mintlify.wiki/donnemartin/system-design-primer/interview/approach.md): Learn the 4-step process to tackle system design interview questions effectively - [Back-of-the-Envelope Calculations](https://mintlify.wiki/donnemartin/system-design-primer/interview/calculations.md): Essential reference numbers and calculations for system design interviews - [Introduction](https://mintlify.wiki/donnemartin/system-design-primer/introduction.md): Learn how to design large-scale systems and prep for the system design interview - [Design a Call Center](https://mintlify.wiki/donnemartin/system-design-primer/ood/call-center.md): Implement a call center system with employee hierarchy and call routing - [Design a Chat Server](https://mintlify.wiki/donnemartin/system-design-primer/ood/chat-server.md): Implement an online chat system with user management, friend requests, and group/private messaging - [Design a Deck of Cards](https://mintlify.wiki/donnemartin/system-design-primer/ood/deck-of-cards.md): Implement a generic deck of cards with BlackJack game specialization - [Design a Hash Map](https://mintlify.wiki/donnemartin/system-design-primer/ood/hash-map.md): Implement a hash map with collision resolution using chaining - [Design a Least Recently Used Cache](https://mintlify.wiki/donnemartin/system-design-primer/ood/lru-cache.md): Implement an LRU cache for caching web query results with O(1) operations - [Design a Parking Lot](https://mintlify.wiki/donnemartin/system-design-primer/ood/parking-lot.md): Implement a multi-level parking lot system with different vehicle types and spot sizes - [Company Engineering Blogs](https://mintlify.wiki/donnemartin/system-design-primer/reference/company-blogs.md): Curated list of engineering blogs from top tech companies - [Latency Numbers Every Programmer Should Know](https://mintlify.wiki/donnemartin/system-design-primer/reference/latency-numbers.md): Essential latency benchmarks for different computer operations to help with system design decisions - [Powers of Two Table](https://mintlify.wiki/donnemartin/system-design-primer/reference/powers-of-two.md): Quick reference table for powers of two, essential for back-of-the-envelope calculations in system design - [Real World Architectures](https://mintlify.wiki/donnemartin/system-design-primer/reference/real-world-architectures.md): Learn from how real-world systems are designed at scale - [Design a Key-Value Store for Search Engine](https://mintlify.wiki/donnemartin/system-design-primer/solutions/key-value-store.md): Learn how to design a key-value cache to store search query results with LRU eviction handling billions of queries - [Design Mint.com](https://mintlify.wiki/donnemartin/system-design-primer/solutions/mint.md): Learn how to design a personal finance management system like Mint.com that handles millions of users and billions of transactions - [Design Pastebin.com (or Bit.ly)](https://mintlify.wiki/donnemartin/system-design-primer/solutions/pastebin.md): Learn how to design a URL shortening and paste service like Pastebin.com or Bit.ly that handles millions of requests - [Design Amazon's Sales Ranking by Category](https://mintlify.wiki/donnemartin/system-design-primer/solutions/sales-rank.md): Learn how to design Amazon's sales ranking feature that calculates and displays top products by category with billions of transactions - [Design a System that Scales to Millions on AWS](https://mintlify.wiki/donnemartin/system-design-primer/solutions/scaling-aws.md): Learn how to iteratively scale a basic web application to millions of users on AWS with load balancing, caching, and database replication - [Design Data Structures for a Social Network](https://mintlify.wiki/donnemartin/system-design-primer/solutions/social-network.md): Learn how to design the data structures and services to find the shortest path between users in a social network with millions of users - [Design Twitter Timeline and Search](https://mintlify.wiki/donnemartin/system-design-primer/solutions/twitter.md): Learn how to design Twitter's timeline feed and search functionality to handle millions of tweets and billions of reads per month - [Design a Web Crawler](https://mintlify.wiki/donnemartin/system-design-primer/solutions/web-crawler.md): Learn how to design a scalable web crawler that indexes billions of pages for search engines - [Study guide](https://mintlify.wiki/donnemartin/system-design-primer/study-guide.md): Suggested topics to review based on your interview timeline (short, medium, long) - [Availability patterns](https://mintlify.wiki/donnemartin/system-design-primer/topics/availability-patterns.md): Understanding fail-over and replication patterns to support high availability - [Availability vs consistency](https://mintlify.wiki/donnemartin/system-design-primer/topics/availability-vs-consistency.md): Understanding the CAP theorem and trade-offs between availability and consistency in distributed systems - [Consistency patterns](https://mintlify.wiki/donnemartin/system-design-primer/topics/consistency-patterns.md): Understanding weak, eventual, and strong consistency patterns in distributed systems - [Getting started with system design](https://mintlify.wiki/donnemartin/system-design-primer/topics/getting-started.md): Learn the fundamentals of designing scalable systems and prepare for system design interviews - [Latency vs throughput](https://mintlify.wiki/donnemartin/system-design-primer/topics/latency-vs-throughput.md): Understanding the difference between latency and throughput in system design - [Performance vs scalability](https://mintlify.wiki/donnemartin/system-design-primer/topics/performance-vs-scalability.md): Understanding the difference between performance and scalability problems in distributed systems