Introduction
Video: https://www.youtube.com/watch?v=cQP8WApzIQQ
Why distributed system
- Parrellism
 - Fault tolerance
 - Physical reason
 - Security reason, need to create isolated environment
 
Challenges:
- Concurrency
 - Partial failure
 - Performance
 
Infrastructure
- Storage
 - Communication
 - Computation
 
Tools
- RPC: for communication
 - Threads
 - Concurrency control
 
Performance:
- Scalability: 2x computer results in 2x performance
 - Fault Tolerance: 
- Availability
 - Recoverability
 
 - Solution:
- Non-vault storage: expensive to update
 - Replication
 
 
Consistency
- Put (key, value)
 - Get (key) -> value