- The system is inherently distributed (e.g. mobile devices like smartphones)
- Reliability (some nodes can fail and the system keeps functioning; fault tolerance)
- Performance (process data faster by utilizing multiple nodes or achieve better latency by requesting data from a nearby node)
- The capacity of a single machine isn’t enough for the task (e.g. limited memory size, bandwidth, CPU cycles, etc.; scalability)