DDD, CQRS, Hexagonal, Onion,... Putting it together
summary
A working migration path for a 10–12 year PHP monolith that builds a sample application with command bus and handlers, clear repository interfaces and static mappers that convert domain objects to persistence arrays, and an initial JSON-backed repository then swapped to SQL to prove tool independence. The design uses ports and adapters (hexagonal/onion), CQRS with queries returning ViewModels/arrays instead of full domain objects, and event notifications to decouple modules (timesheet <> contracts), resulting in much easier testing and incremental replacement of infrastructure.
AI-written summary · about
chapters (26)
- 0:00Intro
- 0:22Jeroen Keppens
- 1:42Legacy Application
- 4:08Normalized Systems - Goals
- 4:50Maintainable Codebase Characteristics
- 6:24Architectural styles & patterns
- 6:48Examples of layered architectures
- 9:47Command Query Responsibility Separation
- 11:04Command Query Responsibility Segregation
- 12:34Regular approach
- 13:02Ports & Adapters : Fundamental blocks
- 14:22Ports & Adapters: Flow of Control
- 14:36Ports & Adapters : Delivery Mechanisms & Tools
- 17:19Ports & Adapters : Primary or Driving Adapters
- 17:36Ports & Adapters : Secondary or Driven Adapters
- 17:49Ports & Adapters: Inversion of Control
- 19:08DDD : Bounded Context
- 21:06DDD : Shared Kernel
- 25:24Onion Architecture : Layers
- 25:49Onion & DDD: Application Layer
- 26:57Onion & DDD: Domain Layer
- 29:11Onion & DDD : Components
- 30:52Events : What/when/why
- 33:28Events : Patterns
- 35:41Events : Decoupling Components
- 36:16Classes & their relations
related talks
34mLevel up with a Microservices architecture
54mHexagonal Architecture in DDD
45mBuilding Monoliths that Could Scale (Easily) to Microservices (If They Need)
29mApplying (D)DDD and CQ(R)S to Cloud Architectures
45mShrek, Onions and Architecture
15mHexagonal Architecture: How to Beat Spaghetti Code?
30mDomain-Driven Design + Command Query Responsibility Segregation + Event Sourcing
02h 31mSlice & Dice your Monolith with Domain Driven Design
