An engineer at a MANGA company recommended reading papers as a habit. Not blog posts — papers, written by people who built the thing. Dynamo was the first one I read. It set the bar.

Key Takeaways

Trade availability for consistency — explicitly. The shopping cart must always be writable. A customer must never see a failure when adding an item. Dynamo accepts stale reads and eventual conflicts as the price of that guarantee. This is a product decision as much as an engineering one.

Push conflict resolution to the application. When two sessions diverge, Dynamo surfaces both versions to the caller and lets it decide. For the shopping cart, that means merging both carts — the user sees everything they added. Dropping items silently is worse than showing duplicates.

Failure is the default assumption. Every component of Dynamo — consistent hashing, hinted handoff, Merkle tree repair, gossip — exists to keep the system running during failure, not to recover after it.

Who Should Read It

Anyone making their first serious attempt at system design. Dynamo isn’t the answer to every problem, but it shows how the question is asked — what must this system never fail at, what can it afford to get wrong, and what do we build from there?

Sections 1–4 are accessible without a distributed systems background. Start there.

For the technical breakdown of the mechanisms: Dynamo (in the works!)

The Dynamo paper is accessible for free, courtesy of Werner Vogels (Amazon CTO, co-author), who also hosts a system design gold mine.