~/talk

Crafting a self-documenting Modular Monolith with DDD principles (theory not included)

Talkat Spring I/O 2025 · 2025-05-22..05-23· [software-architecture]
links:none on file
slides:none on file

Demo repository shows a running modular monolith using Spring Modulith and JMolecules with ArchUnit tests that enforce a layered DDD structure and bounded contexts. Aggregate roots, value objects and repositories live only where tests expect them, and a change-price use case triggers domain events published on transaction commit implementing a built-in transactional outbox. Event listeners support sync and require-new retries, and Server-Sent Events stream order updates to the UI so eventual consistency and rollout to microservices remain straightforward.

AI-written summary · about

  1. 0:00Modular monoliths and DDD
  2. 2:04Microservices strengths and weaknesses
  3. 3:51Monoliths pros and cons
  4. 5:17Why modular monolith
  5. 7:07DDD with Spring Modulith
  6. 9:42Project structure setup
  7. 11:25ArchUnit tests
  8. 13:14DDD in session module
  9. 16:09Architectural tests
  10. 17:57Layer boundaries enforcement
  11. 19:29Change price use case
  12. 22:19Transactional outbox pattern
  13. 24:33Event listeners and consistency
  14. 25:56Event propagation testing
  15. 27:51Eventual consistency handling
  16. 30:24Attendee and order aggregates
  17. 32:35Domain layer isolation
  18. 34:05Bounded contexts exposure
  19. 37:07Module dependencies verification
  20. 38:20Module structure inspection
  21. 40:12Price change event handling
  22. 41:48Immutable domain objects
  23. 43:15Order price updates
  24. 44:42Server-Sent Events
  25. 46:53Architecture documentation
  26. 49:23Key takeaways
  27. 51:12Architecture validation
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.