| Name | URL | Description |
| -------------------------- | --------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
| System Design Primer | https://github.com/donnemartin/system-design-primer | A 200k Stars repo with System Design Notes, not too detailed, but covers a lot of stuff |
| Cloudflare Learning Center | https://www.cloudflare.com/en-ca/learning/ | Cloudflare is a perfect source to learn system design, they have so many free info in their docs |
## Topics
- Cache
- [Cloudflare](https://www.cloudflare.com/en-ca/learning/cdn/what-is-caching/)
- CDN
- DNS
- Load Balancer
- Reverse Proxy
- Database
- Asynchronism
- Message Queues
- Task Queues
- Back Pressure
- Security
- Protocols
- Deployment
- Read [Web App Deployment](../LearnWeb/deployment.mdx) for web app deployment methods
## How to Approach a System Design Interview Question
1. Outline use cases, constraints, assumptions
- Who is client?
- How many client?
- How are clients using it?
- How much data?
- How many requests per second?
- Read/Write Ratio
2. Create the high-level design
- Sketch the main components and connections
3. Design core components
4. Scale the design
- Load Balancer
- Horizontal Scaling
- Caching
- Database Sharding