Most application code freely mixes domain logic with infrastructural concerns. Models are directly tied to the relational database of the project, use cases are inseparable from their web controllers, and external services are used without an appropriate abstraction. This limits your ability to design the application in a domain-driven, test-first way.

What we need is a way to separate core code from infrastructure code. And that’s surprisingly easy. All the design patterns have already been invented for that. Until we run out of time, we’ll keep (re)discovering patterns like Controller, Application Service, Entity, Read Model, Domain event, and so on. These patterns can be used to establish a testable, portable application core, with a focus on behavior, instead of data.


Please login to leave a comment

Steve Winter at 07:51 on 25 Jan 2020

Great session as always, though time was really against us given how much material you had prepared! I definitely think this needs to be at least a full-day workshop.

I was keen to attend having been in your session on this topic at SymfonyCon, and it definitely lived up to expectation.

That said - I would really like to have gone on from there to ‘recouple’, i.e. link this to Doctrine (or some other ORM/DBAL) and a framework like Symfony to see how we do make that connection ‘in the best possible way’.

Thanks also for raffling the copies of your book to attendees, that was very generous of you!

Takes his time to carefully explain material. A little too much material for one morning. Thanks!

Excellent workshop. Matthias has a solid take on how to architect application code, and manages to bring it across clearly. There were a lot of topics to cover, much more than we had time for, but that was ok.
Thanks also for the opportunity to win your book!

Julien Lambé at 14:34 on 25 Jan 2020

I loved that workshop. I've been going through your book previously so this workshop helped me clarify some concepts. I also think that this workshop needs a full-day as there was a lot of material. Otherwise great!

Loved it. Finally got, not only some theory but also some practice with event based programming. This tutorial was a nice first step, with more practice options after the tutorial is over. I hope I find the time in my schedule to explore this further.

Matthias Noback (Speaker) at 16:44 on 28 Jan 2020

Thanks for all the feedback everyone!

Great tutorial packed with lots of information on architecture, tdd, bdd & ddd.
The only downside was that you were expected to have some background in these concepts to be able to do the exercises.
This wasn't a problem for me (aside from bdd being new for me), but I noticed a few participants struggling with some of the concepts in the exercises.

Aside from the knowledge level required it was a very good tutorial; great job Matthias.