/blog / #ddd
#ddd
20 posts
$ Related series
· 19 min
What This Architecture Cost, Measured Rather Than ArguedNEW
What hexagonal architecture costs in Symfony 8: ports, layers and buses counted from the repository, and the thresholds below which it is not worth it. Part 6.
▸ DDD, CQRS and Hexagonal Architecture in Symfony 8 · 6#ddd#hexagonal-architecture#symfony#php#software-architecture#cqrs#refactoring19 min
· 17 min
Event Sourcing Behind the Port You Already Have
Event sourcing in Symfony 8: an event-sourced repository swapped in by one DI alias, proven by the same contract test, and what the alias did not cover. Part 5.
▸ DDD, CQRS and Hexagonal Architecture in Symfony 8 · 5#ddd#hexagonal-architecture#symfony#php#event-sourcing#postgresql#cqrs17 min
· 19 min
Domain Events Are Not Integration Events
Domain events vs integration events in Symfony 8: recorded by the aggregate, released after commit, versioned into a contract, consumed by a worker. Part 4.
▸ DDD, CQRS and Hexagonal Architecture in Symfony 8 · 4#ddd#hexagonal-architecture#symfony#php#messenger#rabbitmq#domain-events19 min
· 15 min
The Read Side Does Not Go Through the Aggregate
CQRS read models in Symfony 8: a read port the domain does not own, a query bus that returns a value, and when a projection table earns its place. Part 3.
▸ DDD, CQRS and Hexagonal Architecture in Symfony 8 · 3#cqrs#ddd#hexagonal-architecture#symfony#php#postgresql#doctrine15 min
· 18 min
The Application Layer, the Transaction, and a Working API
Application layer in Symfony 8: use cases on a Messenger command bus, the transaction boundary in config, optimistic locking and RFC 9457 errors. Part 2.
▸ DDD, CQRS and Hexagonal Architecture in Symfony 8 · 2#ddd#hexagonal-architecture#symfony#php#cqrs#messenger#software-architecture18 min
· 15 min
The Domain Model, and the Only Rule That Matters
DDD domain model in PHP 8.5 and Symfony 8: keep the container out of the domain, and choose Doctrine ORM or DBAL with the costs on the table. Series part 1.
▸ DDD, CQRS and Hexagonal Architecture in Symfony 8 · 1#ddd#hexagonal-architecture#symfony#php#doctrine#software-architecture15 min
· 7 min
Alternatives to Domain-Driven Design, and When to Use Them
DDD is not a default. The real alternatives, transaction script, active record, table module and tactical-only DDD, and how to tell which you need.
7 min
· 3 min
Event Sourcing: State as a History of Events
Storing every change as an event instead of overwriting state: how the history is replayed, where event sourcing fits, and the practices it demands.
3 min
· 4 min
When DDD Fits a Project, and When It Does Not
A short note on the DDD decision: what makes a domain complex enough to be worth modelling, and why introducing it into a legacy system needs a plan.
4 min
· 5 min
Domain Events in DDD (DDD series part 10)
Part 10 of the DDD series: what a domain event actually records, why it is named in the past tense, and the delivery guarantee it does not give you for free.
5 min
· 3 min
Mastering Transactions: The Power of Aggregates in DDD
Part 9 of the DDD series: the aggregate as a transactional consistency boundary, worked through e-commerce, banking and healthcare examples.
▸ Domain-Driven Design (DDD) Series · 9#ddd3 min
· 4 min
Services (DDD series part 8)
Part 8 of the DDD series: what belongs in a domain service, what belongs on an entity or a value object, and how to tell which one you are looking at.
4 min
· 8 min
Hexagonal Architecture and Domain-Driven Design, Together
Hexagonal architecture is a rule about dependency direction, not a folder layout. What ports and adapters buy you, where DDD attaches, what it costs.
8 min
· 3 min
Entity (DDD series part 7)
In Domain-Driven Design (DDD), the concept of an Entity is used to represent the key concepts of the business domain.
3 min
· 3 min
Bounded Context (DDD series part 5)
Part 5 of the DDD series: a bounded context is the boundary inside which one model and one set of terms hold, and why two contexts must not share it.
3 min
· 4 min
Domain Model (DDD series part 4)
Part 4 of the DDD series: the domain model as a shared representation of business concepts, relationships and rules, not a diagram of database tables.
4 min
· 2 min
Value object (DDD series part 6)
Part 6 of the DDD series: value objects carry no identity and are defined entirely by their attributes, which is what makes them safe to share.
2 min
· 6 min
Who should consider using DDD? (DDD series part 3)
Part 3 of the DDD series: which organisations get value from it, from regulated domains to complex products, and which get overhead instead.
6 min
· 2 min
Benefits of using DDD (DDD series part 2)
Part 2 of the DDD series: what a shared vocabulary with domain experts actually buys you, and which of the claimed benefits depend on having one.
2 min
· 2 min
What Domain-Driven Design Is (DDD series part 1)
Part 1 of the DDD series: modelling the business domain rather than the database, and the principles that follow once the model is the centre.
2 min