Axoniq Conference 2025 Day 2: Consultant's Guide to Convincing Customers About Event Sourcing

Frank and Florian from Digital Frontiers reveal the often-overlooked benefits of event sourcing that help convince skeptical customers. Learn about evolvability, seamless testing, and day-one data features, plus debunk common misconceptions.

🎯 Speakers:

Florian Pfleiderer and Frank Steimle - Digital Frontiers (Consultants, 15+ years)

💡 The Real Title:

"A Consultant's Guide to Convincing Your Customer They Actually Want Event Sourcing"🔑 Four Hidden Strengths:

1️⃣ Building Blocks as First-Class Citizens
  • Event modeling blueprint → Code (1:1 translation)

  • Skip UML layer entirely

  • No abstraction overhead

  • Direct from business requirements to implementation

2️⃣ Well-Defined Interfaces & Boundaries
  • Avoid "octopus code" (changes everywhere)

  • Add features without touching existing code

  • Premium subscription example: Just add events

  • Ports & adapters naturally enforced

3️⃣ Testability Without Mocking
  • Given-When-Then = natural language in code

  • No repository mocking hell

  • No constructor mocking complexity

  • Isolated tests that don't interfere

  • New requirements = just add one event to test

4️⃣ Day One Data Features
  • Build features on historical data TODAY

  • 5-year badge? Available immediately via replay

  • New read models from existing events

  • Mobile optimization without new data capture

🚫 Five Misconceptions Debunked:#1: Immutability = Can't Change

  • ❌ Wrong: Upcasting exists (like adding DB columns)

  • ✅ Right: Transform old events to new format#2: Eventual Consistency Unsuitable for Users

  • ❌ Wrong: Users need immediate feedback

  • ✅ Right: UX design solves this (Adam: "Non-issue")#3: CQRS Only for Analytics

  • ❌ Wrong: Just for reporting/scalability

  • ✅ Right: Flexibility for any use case#4: GDPR Incompatible

  • ❌ Wrong: Can't delete immutable events

  • ✅ Right: Encrypt & delete keys, or external PII store#5: Kafka = Event Sourcing

  • ❌ WRONG: Kafka is NOT an event store

  • ✅ Right: Event-driven (between services) ≠ Event sourcing (inside services)

📊 Example: Online Auction HouseTraditional Architecture Pain:

  • Seller entity across 3 layers

  • Add second address line = touch everywhere

  • Tests need mocking: ShipmentRepo, PaymentRepo, ReviewRepo

  • New requirement = change 100+ test locations

Event Sourcing Solution:

  • SellerRegistered event

  • PremiumSubscriptionStarted event

  • Add badge requirement? Replay UserRegistered events

  • New mobile UI? New read model from same events