System Design Fundamentals
Basics
- What is a System Design Interview
- Interview Template
- How to Do Back-of-the-envelop Resource Estimation
- Core challenges in web-scale app design and their conceptual solutions
- System Design Interview Study Guide
Non-functional Requirements
Stateless services
Storage
- Data Structures Behind Databases
- Key-value Database
- Document Database
- Full-text Search Database
- OLTP (Transaction) or OLAP (Analytics)?
Scaling databases
- How to Scale Databases
- Database Replication in System Design
- Data Replication Tutorial
- Change Data Capture
- Database Partitioning in System Design
- Database Partition Tutorial
- Caching
- Redis Tutorial
Dataflow
Message Queue
- Message Queues in System Design
- AMQP-style task queues
- Redis-queue Tutorial
- Log-based message queues
- Kafka Exercise
Batch and stream processing
Transaction
Distributed systems
- Distributed System Theory
- Distributed Database, CAP and PACELC Theorem
- Consensus
- Distributed transactions
Template
- Design Template
- System Design Template Application: Social Media Comment System
- URL Shortener System Design
- Rate Limiter System Design
- Design a Contest Platform Like LeetCode
- Pastebin System Design
- Design for Realtime Monitoring System
- Design Typeahead (Autocomplete) System
- Design a Comment System
- Realtime Chat App System Design
- Dropbox System Design
Open resources to learn fundamentals
- Practice this problem
- Content Delivery Network (CDN)
- Caching
- Caching Patterns
- Distributed Caching
- Latency vs Throughput
- CAP Theorem
- Load Balancing
- ACID Transactions
- SQL vs NoSQL
- Consistent Hashing
- Database Index
- Rate Limiting
- Microservices Architecture
- Microservices Guidelines
- Strong vs Eventual Consistency
- Consistency Patterns
- REST vs RPC
- Batch Processing vs Stream Processing
- HeartBeat
- Circuit Breaker
- Idempotency
- Database Scaling
- Data Replication
- Data Redundancy
- Database Sharding
- Fault Tolerance
- Failover
- Proxy Server
- Domain Name System (DNS)
- Message Queues
- WebSockets
- Bloom Filters
- Consensus Algorithms
- Gossip Protocol
- API Gateway
- Distributed Locking
- Distributed Tracing
- Checksum