0345 4506120

Domain Models in Practice: DDD, CQRS & Event Sourcing

About the Author

Marco Heimeshoff

Marco Heimeshoff

Marco Heimeshoff is a trainer, speaker and software developer. He organizes KanDDDinsky, a conference about Domain-Driven Design and the art of business software and founded the german DDD community in 2013. Between consulting companies around the globe and his day job in building health care software you'll find him speaking at conferences about DDD, socio-technical systems and first principles.

Are you interested in building semantic yet simple software that correctly serves its purpose? Join DDD expert and business software artist Marco Heimeshoff for this intensive three day workshop exploring the technical relationship between code, culture and architecture and learn how to model and implement software from a business perspective.

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 Response 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.


If you are an Architect or Senior Developer with a strong interest in Domain Driven Design and modern message-driven architectures then this DDD, CQRS & Event Sourcing course is for you!

Select specific date to see price, venue and full details.

Learning Objectives

  • Understand Domain-driven design (DDD) and when it applies
  • Model the problem 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


To benefit from this DDD, CQRS & Event Sourcing course, you should have existing professional software development experience. Some prior knowledge about DDD, CQRS and Event Sourcing is helpful, but this is not a prerequisite.

Bring your own hardware

You are invited to bring your own laptop with your preferred IDE to this DDD, CQRS & Event Sourcing course, so you can learn using the tools, languages and IDEs you are already familiar with, and can focus on learning the new concepts and skills covered in this course.

Please ensure you have a unit-testing framework installed that works in your favourite programming language


If you are unable to bring your own laptop and you let us know as soon as possible or at least 1 week prior to your attendance of this course, our team can provide you with a laptop that is pre-installed with the relevant environment.

Course Content

Day One

  • Domain-driven design overview: Essential patterns and practices
  • Defining a Ubiquitous Language
  • Domain model implementation patterns
  • Bounded Contexts
  • Applying DDD in practice

Day Two

  • Capturing user intention instead of editing data
  • Implementing business behaviour in semantic code
  • Applying Event Sourcing
  • Testing with Domain Events using Behaviour Driven Development
  • Implementing Aggregates, Entities and Value Objects
  • Decoupling Bounded Contexts
  • Dealing with performance optimisation and snapshots

Day Three

  • Implementing read models
  • Projecting Event Streams into poly-structured data
  • Dealing with eventual consistency
  • Building distributed systems with Pub/Sub
  • Automating business processes with Sagas
  • Strategies for long lived, evolving Event Sourced systems
  • Discussing benefits, risks and socio-technical implications of CQRS and Event Sourcing

Related Courses

Privacy Notice

In order to provide you with the service requested we will need to retain and use your contact information in accordance with our Privacy Notice. If you choose to provide us with this information you explicitly consent to us using the information as necessary to provide the requested service to you. If you do not agree please do not proceed to request the service from us.

Marketing Permissions

Would you like to receive our newsletter and other information on products and services which we think will be of interest to you by email. We will always treat your information with care and in accordance with our Privacy Notice. You are free to withdraw this permission at any time.


Our Customers Include