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.