Index
Module 1: Introduction to System Design
- What is System Design?
- Why Learn System Design?
- System Design vs Software Design
- Types of System Design: High-Level vs Low-Level
Module 2: Design Basics & Requirements
- Functional vs Non-Functional Requirements
- Capacity Estimation
- Latency vs Throughput
- Availability vs Reliability
Module 3: Scalability and Load Handling
- Horizontal vs Vertical Scaling
- Load Balancers
- CDN (Content Delivery Network)
- Rate Limiting
Module 4: Database Design
- Relational vs NoSQL Databases
- Sharding and Partitioning
- Indexing and Denormalization
- CAP Theorem
Module 5: Caching
- What is Caching?
- Client-Side vs Server-Side Caching
- Cache Invalidation Strategies
- Redis and Memcached Overview
Module 6: Asynchronous Processing
- Message Queues (e.g., Kafka, RabbitMQ)
- Event-Driven Architecture
- Cron Jobs and Scheduled Tasks
Module 7: System Design Patterns
- Microservices vs Monolith
- Service-Oriented Architecture
- API Gateway Pattern
- Strangler Fig Pattern
Module 8: Designing Real-World Systems
- Design URL Shortener
- Design Instagram
- Design WhatsApp
- Design YouTube
Module 9: Non-Functional Topics
- Monitoring and Logging
- Security and Authentication
- Disaster Recovery
- Cost Optimization
Module 10: Interview Preparation Tips
- How to Approach System Design Questions
- Common Mistakes to Avoid
- Resources for Practice