I’ve written a deep dive into Software Design focusing on the "gray area" between High-Level Design (system architecture) and Low-Level Design (classes/functions).

What's inside:

* A step-by-step tutorial refactoring a legacy big-ball-of-mud into self-contained modules.

* A bit of a challenge to Clean/Hexagonal Architectures with a pattern I've seen in the wild (which I named MIM in the text).

* A solid appendix on the fundamentals of Modular Design.

(Warning: It’s a long read. I’ve seen shorter ebooks on Leanpub).


• 0x457 2 minutes ago

I try to use something between hexagonal and this, but more nested (i.e. adapters internally might use this architecture.

Sometimes Domain logic has to leak because you want to rely on certain implementation behavior: for example, logicailly there is separation of concerns, but there is a strong argument to commit these changes in a single transaction. In that case I either switch to oplog or if delay is acceptable push to my saga engine.