This course is meant to teach you the basics of EventSourcing, how it can be used together with CQRS (Command-Query Responsibility Segregation) and why an Aggregate (a DDD concept) and EventSourcing work very well together.
It includes hands-on coding for a basic event-sourced application. You won’t become an expert but you will understand the basics and have a feel for what is necessary to take these ideas into production systems.
For who?
This training is aimed at programmers.
This training is highly practical and interactive, broken down into a series of lectures, group activities, and discussions. Active participation is required, as attendees should be willing to work in small groups with other attendees and contribute to remote modelling activities on a virtual whiteboard.
Learning outcomes
- Basic understanding of CQRS,
- Basic understanding of Event Sourcing,
- Designing aggregates,
- Designing projections,
- How to test your models.
Agenda
Session 1
- Part 1: Introduction into Domain-Driven Design
- What is Domain-Driven Design?
- What is a domain model?
- What is the ubiquitous language?
- Part 2: Basics of CQRS
- What is CQRS?
- What is the difference between CQS and CQRS?
- What is domain centric thinking?
- What are projections?
Session 2
- Part 3: Basics of EventSourcing
- What is EventSourcing?
- What are the benefits of EventSourcing?
- What is eventual consistency?
- What are the traits of an event store?
- Part 4: Aggregates
- What is an aggregate?
- Investigating different boundaries for an aggregate.
- Implementing an aggregate in code.
- Implementing a projection in code.
Requirements
- You should be comfortable writing (and reading) C# or Java (*)
- You have access to a C# or Java (*) coding environment and git(hub) for the coding exercises.
- You don't need prior knowledge of CQRS or EventSourcing.
- We will use Zoom to connect during this workshop
- We will use Miro to collaborate. You will need access to the Miro client in your browser.
(*) if you are not comfortable with these language, please let us know, so we can explore the possibilities of adapting our exercises