System Design Master Roadmap
This document serves as a structured index for learning System Design. Each section below is a placeholder for future, in-depth content.
Part I: High-Level Design (HLD)
Step 1: Fundamentals
- Serverless vs Serverful
- Horizontal vs Vertical Scaling
- What are threads
- What are pages
- How does the internet work?
Step 2: Databases
- SQL vs NoSQL Databases
- In-memory Databases
- Data Replication & Migration
- Data Partitioning
- Sharding
Step 3: Consistency vs Availability
- Data Consistency & its levels
- Isolation & its levels
- CAP Theorem
Step 4: Caching
- What is Caching (Redis, Memcached)
- Write Policies: write back, write through, write around
- Replacement Policies: LRU, LFU, Segmented LRU etc
- Content Delivery Network (CDN)
Step 5: Networking
- TCP vs UDP
- What is http(1/2/3) & https
- Web Sockets
- WebRTC & video streaming
Step 6: Load Balancers
- Load Balancing Algorithms
- Consistent Hashing
- Proxy & Reverse Proxy
- Rate Limiting
Step 7: Message Queues
- Asynchronous Processing (Kafka, RabbitMQ)
- Publisher-Subscriber Model
Step 8: Monolithic vs Microservices
- Why Microservices?
- Concept of single Point of failure
- Avoiding Cascading Failures
- Containerization (Docker)
- Migration to Microservices
Step 9: Monitoring & Logging
- Logging events & monitoring metrics
- Anomaly Detection
Step 10: Security
- Tokens for auth
- SSO & OAuth
- Access Control lists & Rule Engines
- Encryption
Step 11: System Design Tradeoffs
- Push vs Pull architecture
- Consistency vs Availability
- SQL vs NoSQL Databases
- Memory vs Latency
- Throughput vs Latency
- Accuracy vs Latency
Step 12: Practice - HLD Problems
- youtube
- uber
- amazon
- dropbox / google drive
- netflix
- zoom
- booking.com / Airbnb
Part II: Low-Level Design (LLD) / Object-Oriented Design (OOD)
Step 1: Object Oriented Programming
- Encapsulation
- Inheritance
- Polymorphism
- Abstraction
- SOLID Principles
Step 2: Design Patterns
- Creational Patterns (Factory, Singleton, Builder, Prototype)
- Structural Patterns (Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy)
- Behavioral Patterns (Chain of Responsibility, Command, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method, Visitor)
Step 3: Consistency & Thread Safety
- Thread safe injection
- Locking Mechanisms
- Producer-Consumer Problem
- Race conditions & synchronization
Step 4: UML Diagrams
- Class Diagrams
- Sequence Diagrams
- Use Case Diagrams
- Activity Diagrams
Step 5: APIs & Code Structure
- API Design
- Request/Response Object Modeling
- Versioning & Extensibility
- Clean Code Principles: DRY, SRP
- Avoid God classes
Step 6: Practice - LLD Problems
- Design a Tic-Tac-Toe game
- Design a Splitwise app
- Design a Parking Lot
- Design an Elevator System with multiple lifts
- Design a Notification System
- Design a Food Delivery app
- Design a Movie Ticket Booking System
- Design a URL Shortener
- Design a Logging Framework
- Design a Rate Limiter
This roadmap is a living document. Content for each section will be added in the future.