Dynamo is a highly available key-value storage system designed and implemented by Amazon to power some of its core services. It sacrifices consistency under certain failure scenarios in order to achieve high availability. Dynamo uses object versioning and application-assisted conflict resolution to provide an interface that allows developers to configure their own tradeoffs between availability, consistency, cost and performance. It employs techniques like consistent hashing for data partitioning and replication, and a gossip-based protocol for failure detection and membership changes. Dynamo has been used in production at Amazon for over a year, scaling efficiently to serve tens of millions of requests during peak loads without downtime.