Please enable JavaScript.
Coggle requires JavaScript to display documents.
System Design - Coggle Diagram
System Design
Building Blocks
DNS
Load Balancers
Databases
Types :
Relational
ACID
Atomicity
Consistency
Isolation
Durability
Advantages
Flexibility
Reduced redudancy
Concurrency
NoSQL
Advantages
Types
Key-value store
Document
Columnar
Graph
Data replication
Data partitioning
Cost-benefit analysis
Key-value Store
CDN
Distributed Monitoring
Distributed message queue
Pub-sub
Non-functional System Characteristics
Availability
A = (TotalTime - Amount of DownTime) / TotalTime * 100
Nines of Availability
Reliability ❗
Mean Time Between Failures
Mean Time to Repair
Scalability
Types
Request workload: number of requests served by the system
Data/storage workload: amount of data stored by the system.
Dimensions
Size scalability: can we simply add additional users and resources to it?
Administrative scalability: can we grow number of orgs and users sharing a single distributed system easily?
Geographical scalability: can system be used by new regions while maintaining acceptable performance constraints?
Approaches
Vertical scaling - aka scaling up: increasing device capabilities
Horizontal scaling - scaling out: increase the number of devices
Fault Tolerance
System Design Interview
Approach
Recognize components
Generate design
Determine system requirements and constraints
Identify shortcomings in initial design
Discuss tradeoffs and improve iteratively
Tips
Communicate and be open to feedback and collaboration
Ask questions
Strategically tackle unseen design problems
Manage your time
Abstractions
Consistency models
Eventual Consistency
Causal consistency
Sequential consistency
Strict consistency (linearizability)
Failure models
Fail-stop
Crash
Omission
Temporal
Byzantine