DDD Europe 2025 - Program

Practical Introduction to Event Sourcing

EventCentric - Workshop (2 days)

Speakers

Oskar Dudycz

Oskar Dudycz
Date
Description

Event Sourcing is an architectural pattern used in software design, that is gaining popularity with teams managing large complex systems. Recording events that reflect meaningful business actions provides a clearer, more detailed understanding of system behaviour and business processes for all the team members. Although sometimes considered a complicated pattern, this hands-on course will demonstrate the benefits of Event Sourcing and how to apply the pattern in your current projects. Learning objectives:

Thhis hands-on workshop will teach you how to use Event Sourcing, giving you a solid understanding of the fundamentals. You will learn:

  • How and when to apply Event Sourcing, as well as learning the core benefits this pattern brings
  • How to reflect your business logic in the code using events
  • The core differences to the classical approach
  • Different tools such as Emmett, Marten and EventStoreDB and the differences between them
  • How to apply Event Sourcing to your own system
  • Challenges related to Event Sourcing and recommended solutions

Course Agenda:

  • Introduction to Event Sourcing. Basic terminology (event, stream of events, command), differences from the classical approach.
  • What is Event Sourcing, and how is it different from Event Streaming? Advantages and disadvantages.
  • Write model and data consistency guarantees.
  • Various ways of handling business logic: Aggregates, Command Handlers, functional approach.
  • Projections and best practices for building a read model from events.
  • Challenges in Event Sourcing and EDA: delivery guarantees, event processing orders, idempotency, etc.
  • Saga, Choreography, Process Manager, handling distributed processes.
  • Event Sourcing in the context of application architecture, and integration with other approaches.
  • Good and bad practices in modelling and handling events.
  • Event Sourcing in production, evolution, event versioning, etc.

Requirements:

  • An understanding of the basic building blocks of the application design
  • Experience in one of the following languages and platforms: C#, Java, TypeScript (code exercises will be using them)
  • positive and open-minded attitude ;)

About Oskar Dudycz

I'm a developer, technical team leader, and architect. I started a career before StackOverflow existed. For over 17 years, I've been creating systems close to the business process. I believe that Event-Driven Architecture and Event Sourcing are great ways to achieve that.

I'm an active open-source developer active especially in the Event Driven space (I was working on tools like Marten, EventStoreDB, and now Emmett). I'm sharing my journey and findings on my blog https://event-driven.io and practical samples at https://github.com/oskardudycz.