System Design
- Dark scale distributed system
- Scaling
- Vertical
- Horizontal
- Auto
- pros and cons
- Asynchronous system
- Queue system
- Scaling database and server
- Rate limiter vs Limiter
- API Rate Limiting
- Token Bucket
- pros and cons
- Leaky Bucket
- Concereny controller
- Handling Failure
Theory
- Components of System Design
- Logical
- Data
- Database
- Users
- Applications
- Cache
- Communication protocol
- Infra
- Message queues
- Presentation layer
- Tangible
- data - Text, image
- database - SQL, NoSQL
- App - Java, node
- Cache - Reddist, mem-cache
- Infra - AWS, GCP
- Comm - API, RPC, Message
- Queues - Kafka, RabbitMQ
- Client Server Arch
- Thick and Thin client
- 2-Tier, 3-Tier, N-Tier Client
- Fault and failure
- Fail safe
- Fault tolerant
- graceful fail
- Testings
- Transient vs Permanent fault
Other
- Critical and non critical tasks