map-of-contentssoftware-engineering
System Design
Scenarios/Examples
- Scaling a web app
- Estimating Twitter Queries Per Second and Storage - Example
- How to design a Rate Limiter
- Design a key-value store
Concepts
- Models of consistency
- Using Quorum Consensus to get consistency
- CAP Theorem
- Consistent hashing
- Vertical scaling and Horizontal scaling
- Load balancers
- Database replication using master-slave relationship
- Caching in large scale applications
- Single point of failure
- Content delivery networks (CDN)
- Stateful web server and Stateless web server
- GeoDNS routing of clients
- Message queues
- Monitoring logs
- Collecting application system metrics
- Automating application maintenance cycle
- Typical system latency times
- Service Level Agreement (SLA)
- Resolving inconsistencies using versioning and vector clocks
- Failure detection using gossip protocol
- Improve availability after failures - Using sloppy quorum
- Recovering from temporary failures - Hinted handoff
- Recover from permanent failures - Merkle Trees