Learn Labs
5. Encoding and Evolution

5. Encoding and Evolution

Chapter 5 of Designing Data-Intensive Applications — 15 sections.

"Everything changes and nothing stands still." — Heraclitus

The premise: applications change. A change to features usually requires a change to the data they store. But in a large application, code changes cannot happen instantaneously:

  • Server-side: you want a rolling upgrade (staged rollout) — deploy to a few nodes at a time, monitor, work through all nodes. No downtime → more frequent releases → better evolvability.
  • Client-side: you're at the mercy of the user, who may not install the update for a long time.

Therefore old and new versions of code, and old and new data formats, coexist in the system at the same time.


Sections