More Software Engineering Radio episodes

SE Radio 720: Martin Dilger on Understanding Eventsourcing thumbnail

SE Radio 720: Martin Dilger on Understanding Eventsourcing

Published 13 May 2026

Recommended: Useful Architectural Pattern.

Duration: 55:36

Event sourcing is a system design approach that records changes as sequential events to ensure historical traceability, uses event modeling for aligning systems with human workflows, contrasts with CRUD architectures, and emphasizes slice-based design, event streams, and practical applications like legacy modernization and workflow simplification.

Episode Description

Martin Dilger, founder and CEO of Nebuilt GmbH, speaks with host Giovanni Asproni about event sourcing -- a software architecture pattern in which, ra...

Overview

The text provides an in-depth exploration of event sourcing, a system design approach that records changes as a sequence of events rather than relying on structured objects to capture state. This method contrasts with traditional CRUD architectures by treating events as the sole source of truth, enabling detailed historical tracking of system changes. Key concepts include examples like a law information system, where actions such as "case created" are logged to maintain traceability, and the distinction between "events" (business facts) and related terms like event streaming or storming. Event modeling is highlighted as a collaborative technique for early-stage process design, using linear timelines to create readable narratives of workflows, while event storming employs group activities to uncover business rules and dependencies. The approach emphasizes human-centric design, aligning technical systems with how businesses naturally narrate processes.

Core components of event sourcing include state change (input events from user actions) and state flow (event sharing across processes), organized into self-contained "slices" for manageable complexity. Event models can directly inform code generation and simplify development by breaking down workflows into modular steps. Read models derive user-facing data from event projections, ensuring accuracy by tracing information back to its origin. The text also addresses practical concerns, such as data volume management through process-specific event streams and the use of aggregates to validate state transitions. Performance issues are mitigated by designing systems with clear boundaries, avoiding unnecessary coupling. Unlike traditional relational databases, which flatten historical data, event sourcing preserves full timelines, offering advantages in auditing, debugging, and compliance.

The text further discusses challenges in adopting event sourcing, including the need to shift from traditional architectures that prioritize code reuse to slice-based designs emphasizing independence. Modernization strategies suggest starting with small, isolated processes or legacy systems through incremental proofs of concept, leveraging AI to analyze existing code for event models. Collaborative techniques like behavior-driven development (BDD) ensure alignment with business rules, while metrics like slice cycle time help measure progress. Ultimately, the approach advocates for event sourcing as a scalable, flexible default for systems requiring detailed historical insight, contrasting it with event streaming and highlighting its applicability in enterprise environments where data evolution and transparency are critical.

Final Notes

Here are the key insights and takeaways from the text:

Key Insights

  1. Event Sourcing is a method of storing system information as a sequence of events: This approach preserves a full history of system changes and provides a source of truth for state changes.
  2. Event Modeling is essential for understanding business processes and designing event-driven systems: Collaborative modeling techniques like Event Storming can help identify events, create a ubiquitous language, and define system processes.
  3. Event Sourcing decouples systems and enables scalability: By treating new features as independent slices, event sourcing allows systems to scale with flat cost curves.
  4. Event Sourcing emphasizes process-oriented design: The method focuses on how systems evolve over time, rather than relying on static data structures.
  5. Event Sourcing is not just about storing events, but also about understanding the business domain: The approach requires a high degree of collaboration between business stakeholders and technical teams.
  6. Traditional architectures often prioritize simplicity and coupling, while Event Sourcing emphasizes independence and event-driven modeling: This trade-off can be challenging for developers who need to unlearn established practices.
  7. Event Sourcing can improve development speed and reduce risk: By focusing on small, isolated processes and using behavior-driven development (BDD), teams can create systems that are operationally successful in production.

Takeaways for Developers

  1. Event Sourcing requires a mindset shift from traditional CRUD-based design: Developers need to unlearn code reuse and rely on slice-based architectures.
  2. Use AI-powered coding agents to accelerate development: Agents can handle localized tasks without needing to understand the entire codebase.
  3. Start with Event Modeling: Define event models to understand business processes and create executable specifications for system workflows.
  4. Focus on behavior-driven development (BDD) for testing: Test event-driven systems with BDD to ensure alignment with business rules and requirements.
  5. Iterate on small, isolated processes: Emphasize rapid development cycles, such as proof-of-concepts in 12 days, to increase productivity.

Key Takeaways for Business Stakeholders

  1. Event Sourcing improves understanding of business domains: Collaboration with technical teams can lead to systems that are more aligned with user needs.
  2. Business rules should drive system design: Define rules using Given-When-Then scenarios for each system "slice" to ensure alignment with real business needs.
  3. Executable specifications ensure system adherence to business logic: Translate event model rules into executable code specifications to ensure the system meets intended requirements.
  4. Slice cycle time should be a key performance metric: Measure the time it takes a team to build a "slice" to increase productivity and deliver rapidly.
  5. Adopting event modeling can lead to significant productivity gains: Organize an "FedEx Day" experiment to demonstrate the feasibility of event sourcing and slice-based workflows.

Recent Episodes of Software Engineering Radio

6 May 2026 Birol Yildiz on Building an Agentic AI SRE

AI agents in SRE leverage autonomous decision-making, agentic search, and lightweight architectures to replace static runbooks, balancing autonomy with reliability challenges, context management, and human oversight in dynamic environments.

29 Apr 2026 Will Sentance on JS Modernization

JavaScript's evolution from a 1995 scripting language to a performance-optimized modern tool balances innovation with backward compatibility through TC39's incremental updates, browser advancements, community-driven libraries, key features like async/await and symbols, engine optimizations, and a design philosophy prioritizing flexibility and user-driven standardization for large-scale frameworks.

23 Apr 2026 Eric Tschetter on Decoupling Observability

Recommended: Telemetry is important, avoiding vendor lockin is even more important.

Observability in microservices emphasizes decoupled architectures over traditional frameworks to address vendor lock-in, data interoperability, and scalability challenges, while balancing unstructured telemetry management, query language standardization, and cross-team collaboration.

15 Apr 2026 Martin Kleppmann Local-First Software

Local First Software combines local data storage with cloud collaboration to enable offline access, real-time editing, and seamless syncing via AutoMerge and CRDTs, prioritizing user control, privacy, and decentralized workflows with future focus on open standards and AI integration.

8 Apr 2026 Sahaj Garg on Designing for Ambiguity in Human Input

Ambiguity in language and speech, arising from context, phrasing, and incomplete information, poses challenges for AI systems due to their limited context processing, while humans resolve it through contextual cues, tone, and prior knowledge, with strategies focusing on contextual prompts, audio training, data augmentation, and balancing AI efficiency with human-like adaptability in multilingual and ethical contexts.

More Software Engineering Radio episodes