Matthias Noback

Advanced Web Application Architecture by Matthias Noback

Web application frameworks are indispensable. You wouldn't want to deal with raw HTTP messages yourself, nor build your own router, or ORM. But if you're not careful, a framework will take over your entire project. Business logic and framework-specific code will end up being mixed together, in controllers, services and entities. Not being able to describe the use cases of your application without also talking about HTTP, or SQL, leads to hard-to-test and hard-to-change application code. Your core code will be tied to your framework, which endangers the future of the project in the long term.

In this talk I'll explain how to make a clean separation between your own business logic and the code that makes your application's use cases available to the world outside. We'll discuss architectural concepts like "layers" and "ports & adapters", and how applying them will make your application flexible enough to deal with a constantly changing environment.

Talk Questions

  • Question 130
    Do you suggest dispatching the Domain events on your Application Service layer or Domain Layer or using a middleware? Or there are better options at all.
  • Question 136
    How I know when I'm doing Overengineering?
  • Question 137
    How to use database repositories in single responsability? Each query not have one responsability?
  • Question 139
    Should we use Doctrine Entities just as a table representation or we should put inside them any sort of business logic?
  • Question 138
    You have a command to do something and a query to get something. What if I want to for instance query the created user which was just send by a user create command. How wil I know that the command is finished and I can query it? With what unique value can I query it?
  • Question 145
    Is there much benefit of unit testing app components outside the domain logic, hexagon?
  • Question 134
    Do you recommend old single php script file or complex layered architecture ?
  • Question 135
    Do you considered php a language for layered architecture like hexagonal architecture ?
  • Question 147
    So what would a port translate to the project,an interface where the implementation are the adapters?
  • Question 131
    How do we know when an aggregate needs to be splitted into little entities and what happen with the logic that we got in this big aggregate before and now is placed nowhere?
  • Question 132
    Are Domain services able to orchestrate other services and also persist entities or we should move this logic to the app services?
  • Question 141
    In some cases for the domain layer validation you can use a framework that helps you in that. What is you take on using frameworks in the domain layer for such specific needs?
  • Question 142
    I’ve found that entity modes form doctrine are quite hard to separate out with adapters. Any tips on this?
  • Question 144
    You advice don't use framework features on domain? It's reinvent the wheel?
  • Question 148
    I tried to implement DDD and Hexagonal architecture and was fired. What I did wrong ?
  • Question 143
    How I can easily change the framework if I’m applying his specific architecture model without make a refactoring of my application?
  • Question 146
    How do we know when an aggregate needs to be splitted into little entities and what happen with the logic that we got in this big aggregate before and now is placed nowhere?
  • Question 164
    Why do you check the signature in the worker instead of in the endpoint that received the message? It looks hard ti response to attacks this way, right?
  • Question 228
    What would be the benefits of use a middleware for caching instead of a decorator?