Back to All Events

Training: An Introduction to Event Sourcing

Learning a new architectural pattern is a challenging exercise as for a neophyte it can be hard to find information that is necessary to understand the foundations of the subject. That’s why learning from practitioners that know the subject well will give you a head start and help understand the steps you will have to take. Event Sourcing is a pattern which challenges the status quo of persisting the data in microservices and distributed applications. Instead of saving the latest state, it persists the full history of changes, which then can be used to derive the latest information. In turn it will give you powerful capabilities such as audit trail, scalability, traceability and many others.

In this training you will learn the basics of the pattern, and at the end of it you will be able to implement a simple application leveraging Command, Events, Aggregate and a Projection. By learning about the example you will be able to understand the benefits of using Event Sourcing and learn how it relates to Command-Query Responsibility Segregation (CQRS). You will know what are the traits of a good event store and understand in which situation the pattern is applicable and what are the topics that you should learn next.

Learning Outcomes

  • Explain 5 benefits of Event Sourcing

  • Recognise challenges of a 3rd normal form model and explain how CQRS addresses it

  • List 3 traits of an Event Store (global ordering, optimistic concurrency & fine-grained streams)

  • Implement an application with one Event Sourced Aggregate

  • Explain the difference between Command and Event

  • Implement a Projection that will create a read model

Scope

Introduction

  • Challenges of classic persistence model

  • CQRS and Event Sourcing

  • Event Sourcing as persistence model

  • What is required from Event Store

Benefits of Event Sourcing

  • Audit trail

  • Traceability, Debuggability & Observability

  • Scalability & Fault Tolerance

  • Temporal queries

  • Separation of concerns & Decoupling

Building blocks

  • Domain Event

  • Command

  • Aggregate

  • Projection

Prerequisites

  • Proficiency in one mainstream programming language

  • Laptop/notebook with a working development environment and ability to connect to internet

  • A sample web application up and running (should be able to accept an http request)

  • Docker daemon up and running

Course Details

Target Audience

Software Developers and Architects not familiar with the pattern willing to learn how to implement microservices using Event Sourcing

Structure

  • 30% lecture

  • 70% hands-on coding and exercises

Duration

1 day