EIEIOTECHNOVATION
← Training programmes

EIEIO / CLOUD NATIVE & DEVOPS

Microservices & Event Sourcing Training

Course outline

4 days

Duration

4 days (4 hours/day)

Overview

The course is divided into four half-day (4 * 4h), hands-on sessions, where participants will actively learn the concepts introduced via in-depth exercises.

Outline

The sessions are as follows:

Session 1 - Practical Domain-Driven Design (DDD)

This session introduces the DDD methodology for software development.

First, a short orientation of DDD patterns and practices is provided:

Strategic design

  • How to analyze a business domain, identifying subdomains and establising a ubiquitious language.
  • Designing bounded contexts and modeling their relationships via context mapping.

Tactical design

  • Defining and organising business logic via a domain model's building blocks - aggregates, entities, value objects, repositories, events and more.
  • Using Event Sourcing and CQRS to support the implementation of a domain model.

Next, participants will practice strategic and tactical design by modeling a selected business domain, in a collaborative manner.

The outcome of this session is a fully visualized domain model, which will serve as the foundation for the subsequent sessions.

Session 2 - Implementing Event Sourcing

This session delves into Event Sourcing as an architectural pattern, its advantages and pitfalls, and how to use it for implementing a domain model (from session 1). Through code exercises, participants will learn how to:

  • Use a native event store for storing domain events.
  • Build event-sourced aggregates.
  • Handle commands (the C in CQRS).
  • Declare and publish events.
  • Implement projections and query models (the Q in CQRS).
  • Manage the properties of an event-sourced system, such as location transparency and eventual consistency.

Session 3 - Designing Complex Processes

This session addresses the notion of transactions in an event-sourced system, and how to implement them

using so-called Saga components. Through code exercises, participants will learn how to:

  • Coordinate activities between multiple aggregates and bounded contexts with Sagas.
  • React to failures and rolling back transactions.
  • Handle issues related to concurrency and calling 3rd party services (such as legacy systems).

Session 4 - Optimization and Advanced Topics

This session details best practices for building a performant, robust and scalable event-sourced system.

Through code exercises, participants will learn how to:

  • Trigger and handle event replays.
  • Create snapshots of an aggregate's state.
  • Cache aggregates.
  • Implement event versioning ("updating events").

At the end of this course, participants will have learned the essentials of DDD and modeling a business domain, implementing an event-sourced system based on a domain model, coordinating distributed actions and optimizing for production.

Technical Prerequisites

Programming languages used throughout the course (basic knowledge of each is assumed):

  • Java (and the Spring framework)
  • Kotlin

The Axon Framework and Axon Server software is utilized for the exercises and demonstrations.

Further instructions will be provided in an introductory email to the participants before course start.

Programme scope, delivery arrangements and suitability are confirmed during enquiry.