Erasure coding is the idea that we can take a blob of data, break it up into M parts, in such a way that we can reconstruct it from any k of those M parts2. They're pretty ubiquitous in storage systems, block storage, object storage, higher RAID levels, and so on. When storage systems think about erasure codes, they're usually thinking about durability: the ability of the system to tolerate disk or host failures without losing data, while still having only storage overhead. The general idea is also widely used in modern communication and radio protocols3

Erasure Coding versus Tail Latency
from (Marc Brooker) favicon