System Design
System design is about choosing architecture that can scale, stay maintainable, and handle failures.
Core concepts
- Functional vs non-functional requirements
- Horizontal vs vertical scaling
- Stateless services and stateful dependencies
- Caching strategies
- Async processing using queues
- Idempotency and retry safety
- CAP tradeoffs and consistency levels
Practice checklist
- Define expected traffic and data growth.
- Identify failure points in every dependency.
- Add timeouts, retries, and circuit breakers.
- Keep API and data contracts explicit.
- Plan migration and rollback before release.