System Design Index
Notes and resources on distributed systems and system design.
Important Terms
- Scalability: Ability of a system to handle varying loaded
- Horizontal Scaling (Scaling out): Add nodes with similar capacity to existing nodes in distributed system. Can be done dynamically while system is running. Eg: Cassandra, MongoDB
- Vertical Scaling (Scaling up): Add more CPU, memory etc to existing node(s). Can result in downtime. Eg: MySQL
- Diagonal Scaling: Combines horizontal and vertical scaling. Scale up first, then scale out.
- Availability:
- Uptime
- Redundancy
- Replication
- Load Balancing
- Distributed Data Storage
- Consistency Models
- Health Monitoring and Alerts
- Regular Maintanence and Updates
- Geographic Distribution
- Consistency Model
- Consistency Types
Resources
Concepts
- (Book) Designing ML Systems My Notes
- (Course) Hello Interview - System Design in a Hurry
- (Course) DesignGurus - Learn System Design
Practice Questions
- Hello Interview - Design Bitly
- Hello Interview - Design Dropbox
- Hello Interview - Local Delivery Service (Gopuff)