

Java Event-Sourcing from Scratch
Event-sourcing allows the business to ask questions about your application's data that weren't thought of when the system was created, such as "how often are customers changing their shipping address?". Event-sourcing is like version control for your data, with meaningful commit messages, allowing you to understand not just what the current state is, but how it got there.
In this session, you'll learn how event-sourcing works at the code level without event-sourcing libraries getting in the way of deeper understanding. We'll walk through a codebase for a Concert Ticketing system and see how straightforward the implementation can be.
We'll start with modeling the events, the commands (user actions) that generate them, the aggregates that make business decisions, and the projections used to generate the user interface. We'll look at the (Java) code that implements these concepts, and see how event-sourcing makes tests easier to write and understand.
We'll end by touching on the challenges to using event-sourcing, such as performance and schema evolution (versioning).
Questions during and after are not only welcome, but encouraged!