There's a ton of theory available on DDD, event sourcing and CQRS but how does one get's started in terms of code? Moreover, when we have a tight deadline, one wants to solely focus on solving core business problems rather than getting caught up by plumbing non-functional concerns such as snapshotting, command handling, guaranteed events delivery to the right event listeners, events replaying, persisting aggregate, etc. In this talk, we will build an application to see how Axon Framework supports CQRS and Event sourcing by providing a robust implementation for fundamental building blocks such as event dispatching mechanism, aggregates, repositories, event sourcing, Domain Events, etc.to build scalable, extensible and maintainable applications. Furthermore, Axon provides extensive support for Spring which means much of the configuration can be avoided by leveraging Spring's annotation support.
10. #DevoxxPL @nklmish
DDD in a nutshell
Code should reïŹect âBusiness REALITYâ
(Ubiquitous language)
Place behaviour in âDomain Modelâ
11. #DevoxxPL @nklmish
Provide unit of consistency âš
across Domain Model via âAggregateâ
DDD in a nutshell
Code should reïŹect âBusiness REALITYâ
(Ubiquitous language)
Place behaviour in âDomain Modelâ
12. #DevoxxPL @nklmish
DeïŹne clear âbounded contextâ & âš
protect your model.
DDD in a nutshell
Provide unit of consistency âš
across Domain Model via âAggregateâ
Code should reïŹect âBusiness REALITYâ
(Ubiquitous language)
Place behaviour in âDomain Modelâ
59. Saga
âą Use to manage BASE transactions.
âą React on event
âą Coordinates activities between
âą Bounded contexts
âą Aggregates
#DevoxxPL @nklmish
81. #DevoxxPL @nklmish
invoked on
EXTERNAL
SYSTEM
invoked on
DOMAIN
EVENT
POLICY
generates
generates
invokes
invokestriggers
translated into
Final Result == Engineering Input
COMMAND
AGGREGATE
READ MODELâš
(PROJECTIONS)
COMMAND