Splitting the billing schema onto its own instance in 2021, and rejoining it three years later because every report crossed the boundary. The reason given in 2021 was…
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…
The reporting module is slow, memory-hungry and occasionally takes the application down, which is a real argument for extracting it and not a sufficient one. The revisit condition…
A layered architecture documented in a diagram from 2019 and enforced by nothing, with 88 violations by the time anybody checked. The baseline is what makes this adoptable:…
A billing module everybody agrees should be separate, a team of four, and 88 classes that reference it. The boundary, drawn in code rather than in conversation.
A Shared namespace created for three value objects, containing 140 classes four years later. A shared kernel needs an admission rule or it becomes the place things go…