Saga Pattern: 2 years and 40 000 000 domain events later
As you build more complex solutions, you may find that certain interactions in your system depend on more than one module. Order, Inventory, Payments, Delivery... To finish one feature often many sub-system are involved. But you want the modules to be isolated and independent. Yet something must coordinate their work and business processes. Welcome the choreographer - the Saga Pattern a.k.a. Process Manager.
What we try to do everyday in an 8 year old Rails application is to split it into multiple independent parts of application called bounded contexts. But many features requires them to communicate with each other. We do it by publishing domain events and having objects called sagas orchestrate the processes which touch multiple parts of the application. We work on a ticketing&e-commerce application that sells thousands of tickets every day. The insights will be based on real-world battle-tested examples.
I think a lot of talks describe a ways to split your application horizontally with more layers such as presenters, decorators, service objects, repositories etc... But I think much bigger problem is how to split your application vertically into more isolated sub-systems. This is what I would like to show and discuss how we use domain events and sagas so that those sub-systems can communicate between each other.
P.S. I was planning on delivering this topic in September.