Advanced Event Sourcing, CQRS, and DDD Modelling | ET Timezone | Dec 2023
Sorry, this course date is now unavailable.
If you are interested in this course, please see future available dates or register your interest.
Itinerary
Day 1
4th December 2023 - 2023-12-04T14:00Z to 2023-12-04T17:30Z
Day 2
5th December 2023 - 2023-12-05T14:00Z to 2023-12-05T17:30Z
Day 3
11th December 2023 - 2023-12-11T14:00Z to 2023-12-11T17:30Z
Day 4
12th December 2023 - 2023-12-12T14:00Z to 2023-12-12T17:30Z
Overview
Event Sourcing is an implementation of a persistence model where instead of updating the current state of the system we persist its whole history as a stream of events. This approach gives us benefits such as a 100% reliable audit log, the ability to execute temporal queries, and replays that allow us to gain new insights from historical data or correct data inaccurately processed in the past.
In this advanced training course, you will gain the necessary experience on how to model and implement complex systems using Domain-Driven Design, CQRS, and Event Sourcing. It's an ideal follow-on from our 1-day Event Sourcing and CQRS Basics course.
Two technical patterns often used when implementing Event Sourcing are DDD and Command-Query Responsibility Segregation (CQRS). The CQRS architecture is a battle-tested approach used to design extremely high-scale systems by decoupling reads and writes. Modelling of a complex IT system is a task that presents many challenges - starting from business requirements, through working with many development teams and ending on nonfunctional ones related to availability and scalability. Domain-Driven Design is an approach that focuses on managing this complexity by aligning with the business domains to develop highly maintainable systems that deliver on business requirements.
Scope
This advanced training course is targeted at software developers & architects with an elementary understanding of Event Sourcing who are looking to gain the necessary experience on how to model and implement complex systems using Domain-Driven Design, CQRS and Event Sourcing. It will consist of 30% lecture and 70% hands-on coding and exercises. Please make sure you are aware of the prerequisites before any potential bookings.
DDD building blocks
- Events
- Aggregates
- Commands
- Value Objects
- Entities
- Services
Aggregate modelling
- Design-level Event Storming / Event Modelling
- Aggregate Design
- Bounded Contexts
- Private and Public Events
Aggregate implementation
- Event Sourced Aggregates
- Task-driven User Interfaces
- Snapshotting
- Testing using Given-When-Then formula
- Correcting Events
CQRS & Event Sourcing
- Event Sourced Persistence Model
- Read and Write stacks of CQRS
- Benefits of Event Sourcing
Performance & scalability
- Eventual consistency
- Monitoring
- Scaling
- Partitioning
- Event-based context integration
Queries & projections
- Projection design
- Side-effect handling
- Downtime-free Replays
- Process Managers
- Testing using Given-When-Then formula
Learning outcomes
- Explore business domain and model it using Design-Level Event Storming
- Model a boundary of an Aggregate based on its business invariants and rules
- Explain the impact of CQRS on the Consistency, Availability, and Scalability of the system
- Identifying and understanding snapshotting process
- Learn how to design unit tests
- Evaluate event deduplication strategies
- Designing projections
- Describe how to scale out an event consumer to meet business SLOs
- Process manager design
Prerequisites
- Ideally completed our Event Sourcing and CQRS Basics course - if not, you should have an elementary understanding of Event Sourcing
- Proficiency in either C# and Java (these are the languages we have our sample code in currently)
- Laptop/notebook with a working development environment and ability to connect to the internet
- Docker daemon up and running