- Application layer: creates all members and start each Node
- P2P layer: Gossip membership layer and Key-Value Storage layer
- Emulated Network: send and recieve messages
- Completeness all the time: every non-faulty process must detect every node join, failure, and leave
- Accuracy of failure detection when there are no message losses and message delays are small
- When there are message losses, completeness must be satisfied and accuracy must be high. It must achieve all of these even under simultaneous multiple failures.
- CRUD operations (Create, Read, Update, Delete).
- Load-balancing (via a distributed hashing ring to hash both servers and keys).
- Fault-tolerance up to two failures
- Quorum consistency level for both reads and writes (at least two replicas).
- Stabilization after failure (recreate three replicas after failure).