~docbibi/talks

77566d2de4f9285ea8e8080841a1c1e4ae373008 — Borjan Tchakaloff 4 months ago c68e315 main
Add accepted proposal for EuroPython 2024
2 files changed, 47 insertions(+), 0 deletions(-)

A 2024-EuroPython/README.md
M README.md
A 2024-EuroPython/README.md => 2024-EuroPython/README.md +43 -0
@@ 0,0 1,43 @@
# Event Sourcing in production

> Lessons learnt from running Event Sourcing in production: patterns and pitfalls

## Abstract

Event Sourcing (ES) is a powerful concept that lets you adapt your business logic without losing data and past states.
Whether your domain understanding changes or new requirements land on your lap, there is a path forward.
Join us as we talk about some real-world tactics we relied on to manage Event Sourcing in production.
We will accumulate a handful of patterns throughout the talk that will hopefully help you avoid pitfalls and bottlenecks.

Our use cases build on the `eventsourcing` library, a mature and well-rounded Python library that deserves more attention.
We will tackle the three key aspects of a successful event-sourced application: evolution, projection, and runtime.

Software does not run in a vacuum, models need to change and evolve to reflect the world they live in.
ES records the evolution of how we abstract our domain, how we see things.
Eventually these abstractions can become clumsy or simply inappropriate.
We can deal with that without breaking stride (losing data).

ES also gives us the ability to revisit our perspective and change how we present the application state — by creating new projections and replaying the history.
We will look at how it offers a cheap way to support optimal read-models, which we can can tweak and rebuild in the blink of an eye.

Finally, we will present how such a system actually runs in a typical web application.
Whether in the request loop (synchronous), or through eventual consistency (asynchronous).
As a single process, or distributed for parallel processing.

---

This talk assumes some familiarity with _Event Sourcing_ and its friends _Domain Driven Design_ (DDD) and _Command Query Responsibility Seggregation_ (CQRS).

## Outline

1. The concepts (5 minutes)
    ⇒ Brief explanation and definition of event sourcing as well as the relevant parts of DDD and CQRS
2. Evolution (10 minutes)
    ⇒ Strategies to deal with changes in the domain models
3. Projections (_aka_ read models in CQRS) (10 minutes)
    ⇒ How to efficiently query your domain, also to support new requirements
4. Runtime (10 minutes)
    ⇒ Synchronous vs asynchronous requests, horizontal/vertical scaling
5. Tying up and sharing what we learnt (5 minutes)
    ⇒ References to companion examples and documentation to share our experience in patterns (this talk from another angle)


M README.md => README.md +4 -0
@@ 2,6 2,10 @@

Collection of supporting materials to talks I have given, slides and other source code.

## 2024

- July 2024: [_Event Sourcing in production_](2024-EuroPython/), at EuroPython.

## 2022

- July 2022: [_Taking charge of your race conditions_](2022-EuroPython/), at EuroPython.