Want to know how to apply the principles of source control or accounting to your business data?
In this technical session we will show you how to add the time dimension to your data by using event sourcing. We will share our experiences building and running an event sourced web application in the financial domain.
Warning: This session will contain lots of code examples.
|Goal of the session:||Share knowledge on eventsourcing, if not already known learn new way to look at software and the way you store it.|
|Intended audience:||Programmers, architects (so I guess Jan, Marieke, Hank) (see Personas)|
|Topic:||Technology and Technique|
Proper OO programming when talking to a database or some persistence state seems very hard. Using popular ORM frameworks doesn't make it any better.
Event sourcing (popularized by Greg Young, Erik Rozendaal to name a few) captures the state of the application in a series of events. To get the current state one simply has to replay all events. You can compare this how banks keep the balance of your account, they keep the series of bank transactions you did and from there they calculate your current balance. Or how source control systems work: They keep the series of commit and derive the end state from that.
In our opinion it is much easier to write clean, testable, debuggable, understandable and object oriented code when using this paradigm in software development.
Moreover, besides the technical advantages event sourcing provides numerous advantages for the business:
- We get auditlogs for free.
- New features can leverage information from the existing events.
- User intent in captured.
See http://martinfowler.com/eaaDev/EventSourcing.html for a general introduction on event sourcing.
For this session you will not need previous experience on EventSourcing. And if you already have experience with EventSourcing you can help us with some Open Challenges we have. Or just sit back and relax for an hour :-).
Contents of session:
- Introduction to event sourcing
- Event sourcing versus "classical" systems
- Using examples from a real live web application we will provide:
- High level technical overview
- Pieces of The Code
- Testing event sourced systems
- Deploying event sourced systems
- Lessons learned
- What was hard
- What was easy peasy
- Open challenges
Session length: 90 minutes