Cloud

Field note · 9 min

Amazon DynamoDB after ten years

The USENIX ATC 2022 paper: how DynamoDB differs from Dynamo, and predictable performance at scale.

In 2022, fifteen AWS engineers published Amazon DynamoDB: A Scalable, Predictably Performant, and Fully Managed NoSQL Database Service at USENIX ATC, ten years after DynamoDB launched. It opens with a number: during the 66 hours of Amazon's 2021 Prime Day, Amazon's own systems made trillions of calls to DynamoDB, peaking at 89.2 million requests a second.

The paper is worth reading for two reasons. It corrects a common confusion: DynamoDB is not the Dynamo of the famous 2007 paper. And it's an unusually honest account of running a multi-tenant service for a decade: what broke, what they changed, and why "predictable" beat "fast" as the goal.

The problem

The paper's history section explains where DynamoDB came from.

  • Dynamo (2007) was Amazon's internal key-value store for shopping carts: highly available and scalable, but each team ran its own installation. Teams had to become experts in operating a distributed database, and that complexity held back adoption.
  • SimpleDB was Amazon's first managed NoSQL service, and engineers preferred it to running Dynamo even when Dynamo fitted better. But SimpleDB tables were small (10 GB) and latency was unpredictable, because every attribute was indexed and every write updated every index.

DynamoDB, launched in 2012, combined Dynamo's incremental scalability and predictable performance with SimpleDB's managed, table-based experience. The paper notes it shares most of Dynamo's name but little of its architecture.

That's an important distinction for this course. The DynamoDB lab designs a Dynamo-style store: leaderless replication, sloppy quorums, hinted handoff. DynamoDB the service doesn't work that way.