System Design Jargon
To Do
- What is System Design?
- What problems it solves
- High-level vs Low-level design
- Real examples (Instagram, WhatsApp)
- Scalability Basics
- Vertical vs Horizontal Scaling
- Stateless vs Stateful servers
- Load vs Traffic vs Users
- Performance Concepts
- Latency vs Throughput
- QPS (Queries per second)
- Bottlenecks
- CAP Theorem
- Consistency
- Availability
- Partition tolerance
- Real DB examples (Mongo, Postgres)
- Load Balancers
- Why load balancers exist
- L4 vs L7
- Round-robin, least connections
- Where Nginx / Cloudflare fit
- Databases
- SQL vs NoSQL (when & why)
- Indexing (B-tree, hash — concept level)
- Transactions & ACID
- Replication vs Sharding
- Read replicas
- Schema design basics
- Hot partitions problem
- Caching
- Why caching exists
- Cache-aside pattern
- Read-through / Write-through
- Cache invalidation strategies
- Redis vs CDN
- TTL
- Messaging & Async Processing
- Why async systems exist
- Message queues
- Kafka vs RabbitMQ (high level)
- Background jobs
- API Design
- REST vs GraphQL
- Pagination
- Versioning
- Rate limiting
- Designing Real Systems
Order to Follow
- Requirements
- Functional Requirements
- Non Functional Requirements
- Identify Core Entity
- API Designing
- High-level diagram
- Low-level diagram
- Data flow
- Bottlenecks
- Improvements
- Advanced & Real-World Concepts
- Rate limiting algorithms
- Circuit breakers
- Service discovery
- CDN
- Observability (logs, metrics, tracing)
- Failover & disaster recovery
Questions
- URL Shortener
- Authentication System