/pragmatic-ddd-event-sourcing-workshop

For the workshop Build a Pragmatic Domain-Driven Design and Event Sourcing Application

Primary LanguageC#

An Introduction to Domain-Driven Design and Event Sourcing

AKA Build a Pragmatic Domain-Driven Design and Event Sourcing Application Workshop

During this workshop we will collaborate, design, and implement a solution that will result in a working, business-focused, event-driven application in modern C# (dotnet).

This workshop aims to provide a high-level introduction to concepts such as Domain-Driven Design (DDD), Command Query Responsibility Segregation (CQRS), and Event Sourcing. We will build upon these concepts and how they can aid each other, along with their design and usage in software solutions and an analysis of their associated risks.

TL;DR: obtain a pragmatic understanding of these concepts and applying them

Topics

  1. Introduction to Event-Driven Architectures (EDA)
    • differences between approaches
    • terminology
  2. What is Event Sourcing
    • differences from Event Streaming
    • advantages and disadvantages
  3. Handling business logic
    • aggregates
    • command handlers
    • functional (Decider pattern)
  4. Domain Driven Design
    • strategy patterns and sociotechnical system design
    • tactical patterns
      • aggregate
      • value object
  5. Command Query Responsibility Segregation
    • commands
    • queries
    • advantages and disadvantages
  6. Projections
  7. Challenges
  8. Distributed processes in practice: Saga, Process Manager, Choreography
  9. Event Modeling, good and bad practices
  10. In production, evolution, events' schema versioning, etc

Exercises

TODO

Prerequisites

  1. Install Git.
  2. Install .NET 7.0.
  3. Install Visual Studio, Rider, or VS Code.
  4. Install Docker.
  5. Clone this repository.

Running

TODO

Contact

TODO

Miro Board

Link: https://miro.com/app/board/uXjVM0vpicw=/