A change made in 2024 to send identifiers rather than snapshots, and what a year of it produced. The lookup cost is trivial when the consumer shares a…
A message carrying the full order including every line, every address and the customer record, because it was easier than a lookup. Fat messages are defended as avoiding…
A relay process that died on an unhandled exception and left rows accumulating with no error anywhere. The second alert is the one that mattered: the relay stopped…
Every deploy restarting six consumers at once, triggering a rebalance that stops consumption for forty seconds. Rolling the restarts is the obvious answer and it is slower, which…
An event published on every order, with no subscribers since the service that listened was removed in 2022. Three events with no subscribers and one and a half…
A message that cannot be processed and must not be skipped, in a stream where order matters. Halting is the right answer when skipping would corrupt the state…
Replacing a direct call with an event felt like decoupling, and the two modules were still deployed together, released together, and broken together. An event removes a compile-time…
A denormalised projection built for a dashboard that was specified, prioritised and then never scheduled. The projection was the right shape for a requirement that did not arrive,…
A three-step process across two external systems, needing compensation when step two fails, and no appetite for a workflow engine. A state machine in a table, advanced by…