System Design and Scalability
less than 1 minute read
Links
- https://github.com/donnemartin/system-design-primer
- http://www.crackingthecodinginterview.com/
Design Steps
- Scope the problem
- Make Reasonable Assumptions
- Draw the Major Components
- Identify Key Issues
- Redesign for the Key Issues
Algoritm design Steps
- Ask Questions
- Make Believe (Pretend there are no hardware limitations)
- Get Real
- Solve problems
Concepts
- Vertical scaling: better node
- Horizontal scaling: more nodes
- Load balancer
- Denormalization and NoSQL
- Partitioning/Sharding
- Vertical Partitioning
- Key/Hash based Partitioning
- Directory based partitioning
- Caching
- Asynchronous processing & Queues
- Networking Metrics
- Bandwidth
- Thoughput
- Latency
- Mapreduce
- Failures
- Availability and Reliability
- Read-heavy vs Write-heavy
- Security
Comments