DPC2019: DDD, CQRS, Hexagonal, Onion,... Putting it together - Jeroen Keppens

Discover how to combine DDD, CQRS, hexagonal architecture, and other patterns to create a maintainable and scalable system, and learn how to decouple components for greater flexibility and reusability.

Key takeaways
  • DDD, CQRS, hexagonal architecture, and other patterns can be used together to create a maintainable and scalable system.
  • Hexagonal architecture emphasizes the use of ports and adapters to decouple the application from its infrastructure.
  • CQRS is a design pattern that separates the application into two parts: the command handler and the query handler.
  • Events can be used to notify other parts of the system of changes and to provide a way to decouple components.
  • Domain-driven design (DDD) is a software development process that emphasizes the use of the business domain language in software design.
  • Bounded context is a technique used in DDD to divide the application into smaller, independent pieces.
  • Ports and adapters can be used to create a layer of abstraction between the application and its infrastructure.
  • Dependency injection can be used to create a loose coupling between components.
  • The application layer can be divided into smaller, independent parts using the command handler and query handler patterns.
  • The domain layer can be used to encapsulate the application’s business logic.
  • The infrastructure layer can be used to encapsulate the application’s infrastructure concerns.
  • The presentation layer can be used to encapsulate the application’s presentation concerns.
  • The domain service can be used to encapsulate the application’s business logic and make it reusable.
  • The use of interfaces and abstract classes can help to decouple components and make them more flexible.
  • The use of messaging can help to decouple components and provide a way to communicate between them.
  • The use of events can help to provide a way to communicate between components and provide a way to notify other parts of the system of changes.
  • The use of a command bus can help to provide a way to handle commands in a decoupled manner.
  • The use of a query bus can help to provide a way to handle queries in a decoupled manner.
  • The application can be divided into smaller, independent parts using bounded context and ports and adapters.
  • The use of dependency injection can help to decouple components and make them more flexible.
  • The use of interfaces and abstract classes can help to decouple components and make them more flexible.
  • The use of messaging can help to decouple components and provide a way to communicate between them.
  • The use of events can help to provide a way to communicate between components and provide a way to notify other parts of the system of changes.
  • The use of a command bus can help to provide a way to handle commands in a decoupled manner.
  • The use of a query bus can help to provide a way to handle queries in a decoupled manner.