One of the lessons our organization has learned from operating Amazon’s platform is that the reliability and scalability of a system is dependent on how its application state is managed.
Individual nodes in distributed systems is more likely to fail than monolithic system.
Dynamo is used to manage the state of services that have very high reliability requirements and need tight control over the tradeoffs between availability, consistency, cost-effectiveness and performance.
Dynamo allows developer to configure tradeoffs between consistency and availability to fulfill needs of different applications.
Dynamo provides a simple primary-key only interface
Primary-key only is offered as a special mode to use Dynamo as a k-v store.
Data is partitioned and replicated using consistent hashing, and consistency is facilitated by object versioning. The consistency among replicas during updates is maintained by a quorum-like technique and a decentralized replica synchronization protocol. Dynamo employs a gossip based distributed failure detection and membership protocol.
Data is sharded and versioned. Unlike master-slave mode, replication is decentralized.
Storage nodes can be added and removed from Dynamo without requiring any manual partitioning or redistribution.
Data resharding is transparent.
It demonstrates that an eventually-consistent storage system can be used in production with demanding applications.
It is eventually-consistent.
It also provides insight into the tuning of these techniques to meet the requirements of production systems with very strict performance demands.
Tunability is a key feature.