Domain Models in practice: DDD, CQRS & Event Sourcing

Domain Models in practice: DDD, CQRS & Event Sourcing

Learn how to model and implement software from a business perspective

Software that is aligned with the business needs of your customers is hard to build, and it is even harder to optimize for correct domain behaviour, execution performance and scalable information distribution at the same time. Distributing the model with microservices often falls short on the promised benefits and can leave you with a distributed monolith.

The secret to a successful implementation lies in the correct segregation of read and write models from a domain-driven perspective, and connections between them implemented with semantic events.
Join Marco Heimeshoff for this 5 half-day modules workshop as he’ll guide you to build semantic models with a high alignment between business and code.

Target audience

This workshop is for Architects and Senior Developers with a strong interest in Domain-Driven Design and modern message-driven architectures.

Regardless of your experience in either Object-Oriented Programming, Functional Programming, or other paradigms, all you need is the will and ability to build software with a focus on business behavior.


In this course, you will learn how to scale your application so that any number of queries can be handled, while also maintaining a behaviour rich domain model that can deal with complex scenarios. Discover how Event Sourcing enables you to build highly cohesive and decoupled modules and changes the way you write and communicate about tests forever.

These patterns will help you to put your energy where the business value is, by letting you partition your team by their expertise and outsource the busy work. Drawing from Domain-Driven Design concepts, write code with Command Query Responsibility Segregation and learn how Event Sourcing tells a story in domain terms.

Keep your software system design in line with your organisation’s needs, improve readability, and strengthen your communication with key stakeholders.


Session One

  • Domain-Driven Design overview: Essential ideas and terminology
  • Why, how and when to apply Domain-Driven Design
  • Understanding your business model and the stakeholder needs
  • Explore various methods for collaborative exploration.

Session Two

  • Introduction to various flavours of EventStorming
  • Sychronising mental models in the problem space
  • Exploring options to improve the solution space
  • Heuristics to generate value from an EventStorming model.

Session Three

  • Optimize strategy using Subdomain Mapping
  • Bounded Context Mapping – Align your architecture with your organisational structure
  • Discover heuristics to design and decouple bounded contexts
  • Cynefin – Different Levels of complexity in strategic design.

Session Four

  • Hexagonal Architecture – Ports and Adapters in action
  • Tactical DDD Patterns – Exercices in implementing domain models
  • Events – Atomic building blocks of your domain
  • Projections – Polystructured information into various readmodels
  • Implementation using Behaviour Driven Development.

Session Five

  • CQRS overview: Essential ideas and terminology
  • Dealing with scalability, performance and eventual consistency
  • Implementing policies with Sagas
  • Strategies for long-lived, evolving and distributed systems
  • Benefits, risks and socio-technical implications of CQRS and Event Sourcing.

Learning Objectives

  • Understand Domain-Driven Design (DDD) and when it applies
  • Learn to model the domain and explore multiple solutions to choose from
  • Align your design with your business needs using CQRS and DDD
  • Build scalable and decoupled applications with Event Sourcing.

Online Workshop – How does it work

We will meet online in a virtual classroom and use presentation through screen share, collaborative architecture modelling on Miro and Solo- and Mob-programming with screen-shared IDEs. The modules are designed to help you learn in a brain-friendly way. Every module will begin with an interactive lecture and lead to a collaborative exercise. Discussions and questions are encouraged all the time.

The workshop will happen online and in live streaming: the trainer and all other participants will be in a video conference. You’ll be interacting and working together in real-time thanks to a variety of tools you’ll have at your disposal.

The workshop will keep its highly interactive and hands-on spirit despite being online.This is why we *require* that all participants keep their webcam on for the whole duration of the workshop: this will enhance the quality of the communication and of the workshop as a whole.You won’t be sitting at your desk watching slides and videos, and you’ll be engaged in real-time activities for the majority of the time… as if we were in a real classroom!

Why should you buy a ticket

These patterns will help you to put your energy where the business value is, by letting you partition your team by their expertise and outsource the busy work.

Drawing from Domain-Driven Design concepts, write code with Command Query Responsibility Segregation and learn how Event Sourcing tells a story in domain terms.

Keep your software system design in line with your organisation’s needs, improve readability, and strengthen your communication with key stakeholders.


Per partecipare sono necessarie conoscenze pregresse?
Una conoscenza minima di DDD, CQRS ed Event Sourcing è consigliata ma non è richiesta.

In che linguaggio sono presentati gli esempio pratici durante il corso?
Tutti gli esempi sul codice saranno in C#. Non è richiesta alcuna esperienza con C#, Marco spiegherà gli esempi partendo dalle basi.

Cosa devo assolutamente avere per potermi iscrivere a questo corso online?
Se possiedi un computer e un monitor, una rete stabile (almeno 20 Mbps in download e 10 Mbps in upload), cuffie, microfono e videocamera, allora puoi iscriverti al corso senza problemi. Un paio di settimane prima del corso ti invieremo tutte le informazioni sugli strumenti che useremo e come accedervi.
Per la rete, prova a fare uno Speed Test.
Nonostante la modalità online, il corso mantiene il suo approccio interattivo e partecipativo. Per questo motivo, è richiesto che tutti i partecipanti abbiano la telecamera accesa per tutta la durata del workshop per una migliore fruizione e comunicazione.


Il workshop sarà confermato al raggiungimento del numero minimo di partecipanti. Invieremo una comunicazione con la conferma del corso agli iscritti 10-15 giorni prima del corso.

Info pratiche sul workshop

Lingua: Inglese.
Laptop: Sì, ti servirà il laptop per poter seguire il corso. Controlla le specifiche nella sezione F.A.Q.
Numero massimo di partecipanti: 20.
Strumenti e postazione: il corso si svolgerà online e in diretta, attraverso l’uso di alcuni strumenti digitali. Una volta confermato, riceverai tutti i dettagli su come accedere al corso e interagire con il docente e gli altri partecipanti, e su come prepararti al meglio.
È consigliato che ciascun partecipante segua il corso dalla sua postazione: è preferibile non condividere il laptop e la stanza con altre persone e colleghi per una migliore esperienza da remoto.

Vuoi saperne di più sui nostri biglietti?


Under_Cover_LearnerSCONTO 20%

Se ti stai iscrivendo al corso a titolo personale e non hai la Partita IVA, c’è una tariffa speciale per te: uno sconto del 20% sul prezzo corrente del biglietto, che potrai ottenere inserendo il codice Under_Cover_Learner su Eventbrite qui sopra, dove trovi "Enter promo code" (prima di premere il tasto "checkout").

N.B.: Il codice non può essere utilizzato con nessun’altra offerta, ed è valido su tutti i tipi di biglietto.


I really enjoyed the workshop. Countless aha moments even for people who are into DDD for a long time now!Maxime Sanglan-Charlier

The half-day format is very useful for those who have a busy schedule, and the workshop makes it very quick to understand and practice the basics of DDD.Dario Rigolin

It’s great if you want to see how an Event Sourcing architecture is actually made, starting from the visual modelling with EventStorming to the actual code.Pietro Di Bello

DDD is a huge universe. This workshop is the starship that gives you the possibility to explore it safely.Marcello Santambrogio

This is a great experience. Learning by examples is extremely valuable… and Marco’s code is really full of insights!Franco Lombardo

“What effectiveness to do an introduction of Domain-Driven Design + Cynefin & two types of EventStorming in 4 hours, and in an interactive way. Never seen before!”Xin Yao

Marco’s workshop is one of the best workshops that I have attended in years. The concepts and tools are explained very well. The prototypical implementation was for me the icing on the cake.Melvin Lee

Highly suggested to everyone who wants to practice EventStorming and then understand how to apply insights in CQRS+Event Sourcing pattern.Luca Gentile

Very open to Q&A. Good style in answering questions. So patient!James Ratesetter

[…] I’ve never seen a group enjoy a class so much, both product & engineers.Jamie Allen

Marco Heimeshoff

Marco Heimeshoff è un Trainer, Speaker e Sviluppatore Software, EventStorming Facilitator .

Organizzatore di KanDDDinsky, conferenza sul tema Domain-Driven Design e sul business software, e cofondatore della comunità DDD tedesca (2013) e di VirtualDDD.com (2019).



Domain-Driven Design, CQRS and Event Sourcing Unlocked: La nostra intervista con Marco Heimeshoff.


Small Talk: una chiacchierata informale con Marco Heimeshoff.

Meet the Trainer: Marco Heimeshoff presenta il suo workshop Domain Models in Practice: DDD, CQRS and Event Sourcing.

Inside Bounded Contexts: Il talk di Marco Heimeshoff nel corso del nostro remote meetup “An Evening with” (15 aprile 2020).

Chi siamo, in breve :)

Avanscoperta è un ecosistema in espansione fatto di professionisti con una grande passione per l’apprendimento: ci piace imparare cose nuove e scambiare esperienze e idee, esplorando territori finora inesplorati in ambito software, nella sua accezione più ampia possibile.

Selezioniamo con attenzione gli argomenti più rilevanti e i migliori docenti da tutto il mondo, e diamo particolare importanza alle tecniche di insegnamento, preferendo approcci pratici e coinvolgenti.
Unisciti a noi!

Ti interessa questo corso?

Se hai delle domande specifiche, o vuoi ricevere maggiori informazioni, scrivici. Saremo felici di risponderti!


    Vuoi ricevere una volta a settimana i nostri contenuti esclusivi su tecnologia, sviluppo software, business e design?


    Iscriviti alla newsletter!