You can fix anything later, except modularity
Good modularity lets you tolerate crummy code locally and fix it later without breaking everything.
Good modularity lets you tolerate crummy code locally and fix it later without breaking everything.
An ORM lets you build the domain on entities it exposes, which are directly mapped to the database. This is the opposite of Hexagonal Architecture.
A lack of modularity is costly. Investing in a modular architecture protects your software and prevents massive financial losses.
A model is never a faithful representation of reality, but an abstraction designed for a specific purpose. A model exists only through its use.
Hexagonal Architecture, formalized by Alistair Cockburn, aims to isolate the domain. It is based on dependency inversion and dependency injection.
CQRS is based on the idea of distinguishing between write and read models when operations are highly asymmetric. Use sparingly.
“The job of an architect is to build a structure that allows decisions to be delayed as long as possible”: 5 examples illustrating Uncle Bob’s point.
You don’t address all users in the same way. Each persona has its own language, and therefore its own context, and its own BFF (Backend For Frontend).
You probably don’t need these microservices, which are so difficult to deploy. The monolith, provided it’s modular, is right for you.
2 common mistakes when splitting a system into Bounded Contexts: splitting by technical layer and splitting by entity. Think action verbs!
Hexagonal Architecture aims to isolate the application and the domain from the infrastructure. The trade-off is that the infrastructure knows the domain.
First, focus on the system’s modularity at a large scale (strategic DDD). Tactical patterns are important, but they come later.
EDA: a communication model that promotes the decoupling of contexts; ES: a write model built for traceability within a context.