Resources / Blog

Blog

Announcements, articles, interviews, and stories on Event Sourcing, CQRS, and Domain-Driven Design, and on the products built for them.

Feed
Latest · Announcement · September 21, 2026

ESDM 0.15.0: Last Call Before 1.0

Ten weeks ago we put ESDM under the MIT license and asked you to tell us what works and what doesn't. ESDM 0.15.0, released last week, is what came back. It is a big release, and most of it traces to someone using ESDM on a real model and reporting what happened: a vocabulary that speaks more than one language, a command that turns a model into a browsable set of pages, a stable way to point at any element from outside the model, and a linter that explains every finding it makes.

Golo Roden10 min read

2026

  1. Article

    There Is No Row to Lock

    Optimistic locking is one of those techniques you learn once and then use everywhere. A version column, an UPDATE ... WHERE version = 7, and whoever arrives second finds zero rows affected and has to try again. It is cheap, it needs no coordination, and it has kept relational systems correct for decades.

    Golo Roden11 min read
  2. Behind the Scenes

    Not an Event Yet

    Every event stored in EventSourcingDB is a CloudEvent. What your application sends in order to write one is not. It is missing seven of the eleven fields a stored event carries, and if you try to supply them yourself, the database rejects the whole request.

    Golo Roden10 min read
  3. Article

    Start With One Table

    You have been circling Event Sourcing for a while now: long enough to be convinced by the idea, not long enough to have built anything with it. Today you finally stopped reading and picked one table to start with, the one holding who pays you for which plan. Which is when a colleague asks you why. The table works. The reports run. Nobody has complained. And when you are done, it holds the same values it held that morning, so from the outside, you spent an afternoon achieving nothing.

    Golo RodenAlexander Kampf22 min read
  4. Article

    PostgreSQL Is Not an Event Store

    The table takes about fifteen minutes to write. An ID, a stream name, a version number, an event type, a JSON payload, a timestamp. Add a unique constraint, add an index, and you have somewhere to put your events. It is the first thing almost every team reaches for, and for good reason: the database is already running, already backed up, already monitored, and everybody on the team can read it.

    Golo Roden12 min read
  5. Article

    Your Progress Bar Doesn't Belong in the Event Store

    The progress bar works. It fills up, users can see how far along their contract review is, and nobody has complained. Then you open the event store and find 312 events for a single contract, 310 of which nobody would have written if that bar did not have to move.

    Golo Roden11 min read
  6. Article

    Compensating Events Won't Save You

    A customer calls about their account statement. One line records a payment of 4,800 euros, and nobody at your company can explain where it came from. You look into the event store, and there it is: payment-received, timestamped, hash-chained, immutable. The event is wrong, and it will be wrong forever.

    Golo Roden11 min read
  7. Announcement

    Someone Built a Visualizer for ESDM – And It Wasn't Us

    In mid-July, we put ESDM under the MIT license and wrote down a sentence that we meant as a principle: because the schema is public, tooling built on ESDM never needs us in the loop. Two weeks later, that sentence turned out to be a prediction instead.

    Golo Roden10 min read
  8. Story

    Until Further Notice

    The printout lies on the table between us with one line marked in red. 31,400 euros, approved by N. Prentice, March 27, 14:52.

    Golo Roden12 min read
  9. Interview

    Candy for AI: An Interview on Spec-Driven Development

    Golo: Martin, you're the founder of Nebulit and the author of Understanding Eventsourcing, a book that deliberately refuses to treat Event Modeling, Event Sourcing, and Vertical Slice Architecture as three separate topics, and instead weaves them into a single, coherent way of building software. You also co-host the Event Modeling and Event Sourcing podcast, so you spend a lot of your time thinking out loud about this space. Over the last year, though, your attention has visibly shifted toward something new: getting AI agents to turn an event model into running, production-grade code, with as little human support as possible. Before we open the hood, take us back to the moment this clicked for you. What made you point your attention at autonomous code generation, and what convinced you it was more than the usual AI hype?

    Golo RodenMartin Dilger13 min read
  10. Article

    You Don't Need an Audit Log

    Sooner or later, every serious system meets an auditor. Compliance, regulation, or plain good governance shows up and asks for the same thing: a complete, ordered, tamper-proof record of what happened and when. And almost every architecture review answers with the same reflex. Add an audit log. It has the right name, it produces something you can point at, and it feels responsible. In most systems, it is also the wrong answer.

    Golo Roden10 min read
  11. Announcement

    Introducing Our New Pricing Model

    Today, we're introducing a new pricing model for EventSourcingDB. Until now, it came with a single commercial license and little else: one price, the same for everyone, whether you were a solo developer with a side project or a company running it in production. That was simple, but simple and fair are not always the same thing.

    Golo Roden8 min read
  12. Article

    Kafka Is Not an Event Store

    Every time a team sits down to build an event-sourced system, someone asks the same question: we already run Kafka, and Kafka is an append-only, ordered log, so isn't that exactly what Event Sourcing needs? The resemblance is real, and it is tempting. It is also superficial, and mistaking one for the other tends to get expensive months later, once the system is in production and the workarounds have quietly piled up.

    Golo Roden9 min read
  13. Article

    We'll Take the Benefits, Hold the Rules

    There's a moment that shows up in Event Sourcing projects again and again. The design is going well, the team is sold on the idea, and then a single hard requirement surfaces: GDPR's right to erasure. All at once, storing events immutably looks less like a feature and more like a liability. So the team grants itself one small exception – when someone asks to be deleted, they'll reach into the stored event and overwrite the offending field, turning an email address into "redacted". One small edit, applied rarely, to a system that is otherwise append-only.

    Golo Roden9 min read
  14. Announcement

    ESDM Is Now Open Source

    As of today, ESDM is available under the MIT license. The full source of the esdm toolchain, the schema that defines the language, and the documentation now live in a public repository on GitHub. You can read it, use it in any project, and build on it – at no cost and with no strings attached.

    Golo Roden3 min read
  15. Announcement

    Claude, Start My Database

    When we released the Claude Code Plugin for EventSourcingDB at Easter, we proudly listed everything it did not need: no SDK, no MCP configuration, not even a Docker container. Claude had learned to speak EventSourcingDB fluently. But there was a quiet assumption baked into every conversation – that somewhere, someone had already started a database for Claude to talk to.

    Golo Roden9 min read
  16. Announcement

    OpenCQRS 2.0: Tests That Read Like the Domain

    In most software, testing is something you bolt on after the fact: you write the code, then you write tests to convince yourself the code does what you hoped. Event Sourcing quietly inverts that relationship. Because behavior is expressed as events, a test can read like a sentence about the domain: given these past events, when this command arrives, then these new events should follow. The test stops being scaffolding around the code and becomes the specification of what the system is supposed to do.

    Golo Roden10 min read
  17. Interview

    Use Model With Domain: An Interview on Domain Storytelling

    Golo: Henning, Stefan, you are both working at WPS – Workplace Solutions and you are the creators of Domain Storytelling, a collaborative modeling technique that has gained a lot of attention in the Domain-Driven Design community. Before we dive into the method itself, can you tell us a bit about your backgrounds and how Domain Storytelling came to life?

    Golo RodenHenning SchwentnerDr. Stefan Hofer8 min read
  18. Behind the Scenes

    Too Many Islands, Too Few Bridges: Notes from the Event Modeling Conference 2026

    Every once in a while, you walk into a room and feel a particular kind of energy: the sense that a community is standing at the edge of something larger than itself. The first time I experienced this was in September 2011, in Brescia, at the first Node.js Conference Italy: around 250 people from across Europe, convinced they were looking at the next big thing in server-side software. I wrote an article about it back then, every bit as caught up in it as the people around me. As it turned out, we were right.

    Golo Roden9 min read
  19. Article

    Don't Put That PDF in Your Event

    Someone asked us recently what to do when an event has to carry a document. A signed contract as a PDF, a Word file, a scanned invoice. The same question comes up every few weeks, and over the years it has arrived in every shape imaginable: not just documents, but images, audio files, and more than once a video. The phrasing changes, the underlying worry does not. Something big needs to be remembered, and the event feels like the place to keep it.

    Golo Roden10 min read
  20. Article

    Thinking in Events

    Most of us never learned Event Sourcing as a way of thinking. We learned it as a collection of parts. An event store goes here. A read model goes there. When things turn asynchronous, you reach for a saga, and when reads and writes start pulling in different directions, you reach for CQRS. We assemble the pieces the way the tutorials drew them, and for a good while the system holds together.

    Golo Roden10 min read
  21. Article

    Testing Without Mocks

    Open the test suite of almost any business application and start counting the mocks. A mock for the repository, a mock for the clock, a mock for the email gateway, a mock for the payment provider. By the time the test finally reaches the code it was meant to check, half of the system has been replaced by stand-ins that you wrote yourself. The test runs, it turns green, and it tells you something. The question is what.

    Golo Roden9 min read
  22. Announcement

    Commanded, Meet EventSourcingDB

    Today we're delighted to celebrate a new arrival in the EventSourcingDB ecosystem: Thomas Gossmann has released a Commanded event store adapter for EventSourcingDB. Commanded is the de-facto framework for building CQRS and Event Sourcing applications in Elixir, and with this adapter it can now store its events in EventSourcingDB. If you work in Elixir and you've wanted to put EventSourcingDB underneath your aggregates and process managers, that option exists today.

    Golo Roden9 min read
  23. Interview

    Event-Driven TypeScript: An Interview on Nimbus

    Golo: Daniel, you're the CTO of Overlap in Vienna, Austria, and the lead architect behind Nimbus. Overlap isn't a framework shop, you build and ship real products for real customers, which makes the decision to build a framework all the more interesting. Before we get into the design, take us back to the beginning: what were you running into, again and again, in actual projects that made you decide to build Nimbus rather than reach for something that already existed?

    Golo RodenDaniel Gördes17 min read
  24. Article

    The Read Model Zoo: Projections Beyond Tables

    Say "projection" to most developers and they reach, almost reflexively, for a SQL table. Denormalized, perhaps materialized, but ultimately rows in a relational database. It happens so quickly that it doesn't feel like a decision. It feels like the definition of the word.

    Golo Roden10 min read
  25. Article

    You Don't Need an Outbox

    The outbox pattern has quietly become canonical in microservice tutorials. It has a name, library support, conference talks, and a steady stream of blog posts that walk through implementing it. It's blessed. And yet, every time it shows up in a system, it's a sign that something else has gone wrong upstream.

    Golo Roden9 min read
  26. Article

    Commands Aren't Just Events in Reverse

    BorrowBook and BookBorrowed. ReserveSeat and SeatReserved. AcquireBook and BookAcquired. The first half is what someone wants, the second half is what happened, and the only visible difference is the tense. Most diagrams in most Event Sourcing tutorials draw the two as a pair, and after enough examples, your brain quietly starts assuming they always will be.

    Golo Roden9 min read
  27. Article

    What's an Entity, Anyway?

    I've worked with Domain-Driven Design for fifteen years, and I'll admit something I usually keep to myself. There's one concept in DDD whose point I've never quite gotten. Not because I haven't read Evans, and not because I haven't built systems around it. I've done both. But every time I sit with the concept of the Entity and ask myself what it's actually for, I come away with the same shrug. Value Objects feel intuitive. Aggregates feel intuitive. The Entity feels like a placeholder that everyone agreed to keep teaching anyway.

    Golo Roden11 min read
  28. Article

    Is DDD Overkill for My CRUD Project?

    We hear it almost every week. A developer leans back, half-smiles, and says something like: "Domain-Driven Design? Sure, for a big enterprise system. But mine is just a simple CRUD app. Wouldn't DDD be total overkill?" The tone is friendly, sometimes even a little apologetic, as if they're letting us down gently. And the reasoning sounds airtight. CRUD is simple. Domain-Driven Design is heavy. Why bring a freight train to move a couch?

    Golo Roden11 min read
  29. Article

    Your Read Model Doesn't Always Need a Database

    Sooner or later, every team building an event-sourced system runs into the same question: which database should we use for the read model? The textbook answer is reassuringly pragmatic. It depends. Pick the tool that fits the access pattern. Relational if you need joins and ad-hoc queries, document-oriented if your data is hierarchical, key-value if you mostly look things up by ID, a graph database for relationships, a spatial database for geodata, and so on.

    Golo Roden10 min read
  30. Article

    Continuous Modeling, or What Happens to the Model on Tuesday?

    Friday afternoon. The sticky notes on the wall are the densest they've been all week. Someone has redrawn a Bounded Context for the third time, and this time everyone in the room nods. Two product managers, three engineers, a domain expert, and a coach who's been keeping the conversation honest agree: this is what the system actually is. Phones come out, photos get taken. People shake hands and say things like finally, and now we know. The room empties.

    Golo Roden9 min read
  31. Article

    How Can I Force Myself to Stop Thinking in Technical Solutions?

    Henry Ford is often quoted as having said, "If I had asked people what they wanted, they would have said faster horses." The line is probably apocryphal, but the picture it paints is accurate. People describe solutions, not problems. They say "I need a queue" when what they mean is "things keep getting lost between two systems." They say "we need a microservice" when what they mean is "this part of the codebase is painful to deploy." The technical answer arrives before the question is even formed, and that is true for product owners, business stakeholders, and developers alike.

    Golo Roden10 min read
  32. Article

    Ubiquitous, But in Which Language?

    A few years ago, we sat in a workshop room in Switzerland with a team that wanted to build an event-based dispatching system for their industrial operations. The stakeholders had flown in from across the country, from the German-speaking north, the French-speaking west, and the Italian-speaking south. We had everything Domain-Driven Design tells you to want, the right people in the room, real domain expertise, real business problems to solve. What we didn't have was a shared mother tongue.

    Golo Roden10 min read
  33. Article

    Two Maps, One Domain

    Most teams who say they "do Domain-Driven Design" are doing tactical DDD. Aggregates, Entities, Value Objects, Repositories. They write code that follows the patterns, draw diagrams that show the building blocks, and argue about whether something belongs in the domain layer or the application layer. It feels like DDD. It looks like DDD. And it is, in a narrow sense. But it's only one half of the picture. The other half, the strategic half, is where most teams quietly drift, often without noticing.

    Golo Roden10 min read
  34. Announcement

    One Year of EventSourcingDB, and the Language That Belongs Beside It

    A year ago today, on the 5th of May, 2025, we shipped EventSourcingDB 1.0. We've spent the months since watching teams take it into production, hearing the stories of what they built on top of it, and learning more about the rough edges of event-driven work than we did in the decade before. Today, exactly twelve months later, we're not here to celebrate the past. We're here to take the next step.

    Golo Roden9 min read
  35. Announcement

    Welcoming Nimbus: Event-Driven Development for TypeScript

    Today we're thrilled to celebrate the launch of Nimbus, a new event-driven application framework for TypeScript built by our friends at Overlap in Vienna, Austria. Nimbus integrates natively with EventSourcingDB and brings clear, explicit support for commands, events, and queries to the JavaScript and TypeScript world. We're genuinely grateful to be celebrating this with them. Overlap has built something thoughtful and substantial, and the JavaScript and TypeScript world is better for it.

    Golo Roden10 min read
  36. Article

    Email Uniqueness in Event Sourcing

    Recently, a reader asked us how to enforce email uniqueness when registering users in an event-sourced system. It is a fair question. In a relational database, you add a column, slap on UNIQUE, and the problem is solved. The database does the heavy lifting, and you move on with your day. In Event Sourcing, that easy answer simply does not exist.

    Golo Roden9 min read
  37. Article

    Great Minds Should Not Think Alike, They Should Think Together

    The Event Sourcing, Domain-Driven Design, and CQRS community is full of brilliant people. Thoughtful practitioners, passionate speakers, prolific authors. People who genuinely care about building better software through deeper domain understanding. And yet, for a community built around the idea of shared understanding, we have a remarkably hard time understanding each other.

    Golo Roden12 min read
  38. Article

    It's None of Your Business

    Three weeks ago, we introduced Simple Mode, a new mode for EventSourcingDB that replaced expressive domain events with three universal operations: row-inserted, row-updated, and row-deleted. Many of you laughed. Some of you forwarded it to colleagues who were not sure whether to laugh or cry. But beneath the satire, the frustrations we exaggerated were real. Teams genuinely struggle with Event Sourcing, and the reason they give is almost always the same: "It's too complex. We just want to store data."

    Golo Roden10 min read
  39. Article

    Sagas vs Process Managers

    The moment a workflow spans more than one aggregate or service, someone will say: "We need a saga." It has become the default term for anything that coordinates multiple steps in an event-driven system. Book a flight, reserve a hotel, charge the credit card, and if any step fails, roll everything back. That's a saga, right?

    Golo Roden10 min read
  40. Interview

    Blueprinting the System: An Interview on Event Modeling

    Golo: Adam, you created Event Modeling and have been teaching and refining it for years now. You are also the founder of AdapTech Group and have worked with countless teams on adopting this approach. Before we dive into the method itself, can you tell a little about what problem you were originally trying to solve? Was there a specific frustration with existing approaches that led you to develop something new?

    Golo RodenAdam Dymitruk21 min read
  41. Announcement

    Elixir Client SDK 1.0 Now Available

    Today we're excited to announce the release of the official Elixir Client SDK for EventSourcingDB, version 1.0. If you're building event-sourced systems on the BEAM, you now have first-class support for writing, reading, and observing events from your Elixir applications.

    Golo Roden6 min read
  42. Article

    REST in Peace

    REST has become the de-facto standard for building web APIs. Almost every tutorial, framework, and job listing treats it as the obvious choice. But what most developers call "REST" has very little to do with what Roy Fielding described in his dissertation back in 2000. Today, REST typically means HTTP verbs, JSON payloads, and CRUD operations mapped to resources. And that is exactly where the problem begins.

    Golo Roden9 min read
  43. Article

    Hidden in Plain Sight: The Events You Forgot to Model

    There's a very specific moment that most teams working with Event Sourcing eventually run into. Someone asks a seemingly simple question about the past: why did this happen, how often has that occurred, what would have been the case if things had gone differently. You open the event store, expecting the answer to be right there, because that's the promise, after all. The full history, nothing lost, everything reconstructible. And then you realize the event you'd need was never written. The information existed once, for a brief moment, and slipped away before anyone thought to catch it.

    Golo Roden10 min read
  44. Article

    A Skill for Easter: Teaching Claude to Speak EventSourcingDB

    Two weeks ago, we introduced the MCP Server 1.0 for EventSourcingDB, connecting AI agents to your event store through the Model Context Protocol. It showed what becomes possible when LLMs can query events, inspect subjects, and run EventQL in natural language. But setting up a Docker container and configuring an MCP client is not always what you want when you just need to quickly interact with your database. Sometimes you want something lighter.

    Golo Roden9 min read
  45. Announcement

    Introducing Simple Mode

    Over the past few months, we have received more feedback than ever before. Hundreds of conversations with developers, architects, and CTOs have painted a remarkably consistent picture. The message was clear, and we owe it to you to be honest about what we heard: Event Sourcing is too complex. Not in theory. In theory, everyone loves it. But in practice, teams struggle. They struggle with modeling, with naming, with the sheer cognitive overhead of thinking in events rather than rows.

    Golo Roden9 min read
  46. Article

    Debugging Event-Sourced Systems: A Detective's Guide

    In a traditional CRUD system, debugging starts with a familiar question: "What is the current state?" You open the database, look at the row, and see that the order status is "cancelled." But you do not know why. Was it the customer? The payment provider? An automated process? The database shows you the crime scene, but not the crime. All you have is a body and no witnesses.

    Golo Roden8 min read
  47. Article

    Introducing DDD to Your Organization

    You have read the books. You have watched the talks. You are convinced that Domain-Driven Design would help your team build better software. The models would be clearer, the communication with stakeholders sharper, the architecture more aligned with the business. There is just one problem: nobody else in your organization knows what DDD is, and nobody asked for it.

    Golo Roden9 min read
  48. Article

    Naming Events Beyond CRUD

    You open the event store and see UserUpdated. What happened? Did the user change their email? Did they accept the terms of service? Did an admin reset their password? The event name tells you nothing. It is CRUD in disguise, a technical label that hides what actually occurred.

    Golo Roden8 min read
  49. Article

    Decide, Evolve, Repeat

    Almost every Event Sourcing implementation starts with aggregates. You define a class, give it a method for each command, mutate internal state when events are applied, and wire it all up with a framework. This works. Countless systems have been built this way. But if you step back and ask what Event Sourcing actually needs at its core, the answer is surprisingly minimal.

    Golo Roden7 min read
  50. Announcement

    Introducing the MCP Server 1.0 for EventSourcingDB

    AI-powered agents are no longer a future promise. They are here, embedded in development workflows, automating decisions, analyzing data, and helping teams move faster. Tools like Claude, ChatGPT, and Gemini have become part of the daily toolkit for developers and architects alike. But until now, these agents had no way to talk to your event store. They could reason about code, summarize documents, and generate queries, but they could not read your events, explore your subjects, or run an EventQL query against live data. The most valuable data source in an event-sourced system was invisible to AI.

    Golo Roden7 min read
  51. Article

    All Models Are Wrong, Some Are Useful

    "All models are wrong, but some are useful." The statistician George Box wrote this in 1976, and it remains one of the most underappreciated truths in software engineering. We spend weeks, sometimes months, trying to build the perfect domain model before writing a single line of code. We draw diagrams, debate naming, argue about boundaries. The intention is good: get it right upfront so you don't have to fix it later.

    Golo Roden7 min read
  52. Article

    It Was Never About the Database

    We build a database. We spend our days thinking about storage engines, query languages, and wire formats. We obsess over write throughput, replay performance, and consistency guarantees. This is what we do, and we care deeply about getting the technical details right.

    Golo Roden8 min read
  53. Behind the Scenes

    One Line at a Time

    When you build a database for Event Sourcing, one of the early design decisions is deceptively simple: how do you send data from the server to the client? JSON is the obvious answer. Every language has a parser, every developer knows the format, and every HTTP client handles it out of the box. But standard JSON has a fundamental limitation that becomes a showstopper the moment you deal with event streams.

    Golo Roden9 min read
  54. Article

    The Snapshot Paradox

    When developers discover Event Sourcing, one of the first concerns that arises is replay performance. "What if a subject accumulates thousands of events? Won't rebuilding state become painfully slow?" The answer that usually follows is snapshots. Store the current state periodically, and start replaying from there instead of from the beginning. Problem solved, right?

    Golo Roden8 min read
  55. Article

    Consistency Is a Business Decision

    You have probably heard of eventual consistency. The short version: in a distributed system, when data changes in one place, other parts of the system might not see that change immediately. For a brief moment, different components have different views of the truth. Eventually, they all catch up. Eventually, they all agree. But not instantly.

    Golo Roden12 min read
  56. Article

    Training AI Without the Data You Don't Have

    Tesla's self-driving cars have driven hundreds of millions of miles on real roads. Impressive, right? But here is the problem: most of those miles are on sunny highways with clear lane markings and predictable traffic. The cars have seen thousands of variations of "blue sky, straight road, normal behavior." What they have not seen, or at least not nearly enough, is the moose that jumps in front of your car at 2 AM on a snow-covered country road in northern Sweden. That is the one-in-a-million scenario. And it is exactly the scenario where your AI needs to get it right.

    Golo Roden9 min read
  57. Article

    Data Is the New Gold, Here's How to Mine It

    Picture this: you work at a mid-sized e-commerce company. The marketing team needs customer purchase patterns. The logistics team needs order fulfillment timelines. The finance team needs revenue breakdowns by product category. All of this data exists somewhere in your organization. But when marketing asks the data engineering team, they get "file a Jira ticket." When logistics asks the backend team, they get "we can export a CSV next week." Everyone knows data is gold, but getting to it feels like mining with a spoon.

    Golo Roden8 min read
  58. Article

    DDD: Back to Basics

    A few months ago, I wrote about what went wrong with Domain-Driven Design. In If You Apply DDD to DDD, You Won't Get DDD, I argued that the patterns became the goal, the terminology became a barrier, and the human work got buried under technical abstractions. That criticism stands. But criticism alone is incomplete.

    Golo Roden11 min read
  59. Article

    Three Conversations Worth Having With Your CTO

    You have built something good. The architecture is solid, the code is clean, the team knows what they are doing. But when you suggest a foundational change, like rethinking how data is stored, the conversation stalls. "What is the business case?" "What problem does this solve?" Fair questions. Hard to answer in a hallway conversation.

    Golo Roden5 min read
  60. Article

    Soft Delete Is a Workaround

    Three weeks ago, Alex Buchanan published a thoughtful blog post about soft delete strategies. In "The challenges of soft delete", he describes the problem carefully and offers four creative solutions. His analysis is thorough, his examples concrete, and his engineering instincts sound.

    Golo Roden9 min read
  61. Article

    Predicting Failures Before They Happen

    A machine fails. You know it failed. But do you know why? Traditional systems store only the current state: Temperature 72°C, RPM 1,200, last service three months ago. You see the end state, but not the journey. You see where the machine is now, but not how it got there. We work with a customer who builds digital twins for industrial machines, and they faced exactly this challenge.

    Golo Roden6 min read
  62. Article

    Four Ways to Migrate to Event Sourcing

    "We can't do Event Sourcing. We're not starting from scratch." This is one of the most common objections I hear when consulting teams on Event Sourcing. And it's understandable. Most teams don't have the luxury of a greenfield project. They have existing systems, legacy code, and ongoing business requirements. The idea of introducing Event Sourcing into that reality feels impossible.

    Golo Roden8 min read
  63. Article

    The Three-Cent Problem

    A few years ago, a bank where we had one of our business accounts lost a transfer of 35,000 Euros. The money left one account but never arrived at the other. It happened between Christmas and New Year, so at first we assumed it was just slow. It was not slow. It was gone.

    Golo Roden6 min read
  64. Article

    Your Aggregate is Not a Table

    When developers first encounter Event Sourcing, they bring their mental models with them. Years of working with objects and tables have shaped how they think about data. And so, when they hear the word "Aggregate," something familiar clicks in their brain: an Aggregate must be like an object, and objects map to tables. This intuition feels right. It's also wrong, and it leads to Event Sourcing that looks suspiciously like CRUD with extra steps.

    Golo Roden7 min read
  65. Article

    What Aviation Teaches Us About Auditing

    A plane touches down at a busy airport. In 45 minutes, it will take off again. Between landing and departure lies a precisely orchestrated ballet: refueling, catering, cleaning, technical checks, crew handover, baggage handling, and passenger boarding. All of this happens in parallel, all under time pressure. And all of it is documented. Not as an afterthought, but as the core of the operation. We work with an airport where exactly this challenge exists: ensuring that every action during a turnaround is recorded, traceable, and tamper-proof.

    Golo Roden8 min read
  66. Article

    Don't Kill Your Users

    When I consult customers on Event Sourcing, there's a moment that happens almost every time. The team looks confident, maybe even a little proud. They tell me: "Actually, we already do Event Sourcing." And then they show me their events. UserCreated. OrderUpdated. InvoiceDeleted. My heart sinks a little.

    Golo Roden6 min read
  67. Article

    Time is of the Essence

    First of all: We wish you a happy new year! We hope you had a wonderful Christmas and an amazing time! 🎉

    Golo Roden5 min read

2025

  1. Behind the Scenes

    2025 in Review: A Year of Events

    On May 5th, 2025, we shipped EventSourcingDB 1.0. After years of building, learning, and refining, we finally had a product we were proud to put in front of the world. That moment marked the beginning of something we had dreamed about for a long time. Now, as the year draws to a close, it's time to look back at what has happened since then – and to say thank you.

    Golo Roden5 min read
  2. Interview

    Kill Aggregate? An Interview on Dynamic Consistency Boundaries

    Golo: Bastian, you are working as a freelancing software developer with a focus on Domain-Driven Design (DDD), Event Sourcing, and related topics. And you've been advocating for Dynamic Consistency Boundaries (DCB) for a while now. Can you tell us a bit about your background and how you got into this space?

    Golo RodenBastian Waidelich12 min read
  3. Article

    One Database to Rule Them All

    "Should we use one EventSourcingDB for all our services, or should each service have its own?" This question comes up in almost every conversation about service-based architectures. Teams want to keep things simple. One database sounds easier to manage than five. The appeal is understandable.

    Golo Roden10 min read
  4. Article

    Versioning Events Without Breaking Everything

    Imagine a city library that has been collecting catalog cards for over a hundred years. In 1920, librarians recorded "Author" and "Title." In 1970, they added the ISBN. In 1990, "Author" became "Authors" (plural, to accommodate co-authors). In 2020, they introduced e-book formats and licensing information.

    Golo Roden8 min read
  5. Article

    ... And Then the Wolf DELETED Grandma

    Last week, I had the pleasure of speaking at the Software Architecture Gathering 2025 in Berlin. The conference is organized by the iSAQB (International Software Architecture Qualification Board) and brought together around 400 attendees from numerous countries. My talk, titled "... And Then the Wolf DELETED Grandma," explored why CRUD falls short when modeling real-world processes, and about 120 people joined me in the room to discuss fairy tales, databases, and the limits of our industry's favorite paradigm.

    Golo Roden10 min read
  6. Article

    18 Months of Events Fit on Four Floppy Disks

    "Event Sourcing uses too much storage." We hear this all the time. The argument goes like this: since you never delete anything and only append new events, your storage requirements grow indefinitely. Eventually, you'll run out of space. It sounds logical. It's also almost always wrong.

    Golo Roden6 min read
  7. Article

    Event Sourcing is Not For Everyone

    A few days ago, Martin Dilger published an article on LinkedIn titled "When Event Sourcing Doesn't Make Sense (And How to Know the Difference)". It's a thoughtful piece that addresses an important question: when should you not use Event Sourcing? The article sparked several private conversations, and one in particular revealed a confusion I see far too often.

    Golo Roden12 min read
  8. Announcement

    Event-Driven Data Science: EventSourcingDB Meets Python and Pandas

    Data analysis is more important than ever. Data science and AI have become essential tools for many companies. The tools keep getting better: more powerful models, faster computers, smarter algorithms.

    Golo Roden9 min read
  9. Article

    Exactly Once is a Lie

    Imagine you're placing an order in an online shop. You click the "Submit Order" button. Nothing happens. You wait a few seconds. Still nothing. So you click again. And maybe once more, just to be sure. Finally, a confirmation page appears. You've successfully placed your order – or have you? Did you place one order, or three?

    Golo Roden10 min read
  10. Article

    Proving Without Revealing: Merkle Trees for Event-Sourced Systems

    Imagine it's January 2026. You run a platform with millions of users. An auditor walks in with a specific request: "Show me proof that you captured a GDPR consent event for user #12847 on March 15th, 2024." You know the event exists – it's sitting in your event store. But here's the problem: you can't just hand over your complete event log. That log contains millions of events with sensitive customer data, financial transactions, business secrets, and personal information from thousands of other users.

    Golo Roden14 min read
  11. Article

    If You Apply DDD to DDD, You Won't Get DDD

    Domain-Driven Design (DDD) promises better software through a focus on the business domain and a shared understanding between developers and domain experts. That's the essence, distilled to one sentence. But if you actually apply this principle to DDD itself – asking what the domain is, what matters, what can be discarded – you won't end up with what we call "DDD" today. You'll end up with something much simpler.

    Golo Roden11 min read
  12. Article

    Local Development Setup: EventSourcingDB in 5 Minutes

    Want to try EventSourcingDB right now? Here's all you need:

    Golo Roden9 min read
  13. Article

    CQRS Without The Complexity

    Imagine you're standing at the counter of your local library. You want to borrow a book – let's say it's "2001: A Space Odyssey". You tell the librarian, they check if the book is available, stamp your card, and hand you the book. Simple, right?

    Golo Roden10 min read
  14. Announcement

    EventSourcingDB 1.2.0 is Available

    EventSourcingDB 1.2.0 is available for download. Since we shipped 1.1.0, we've spent a lot of time listening – at conferences like KanDDDinsky, in customer calls, through GitHub issues, and in direct conversations with teams running EventSourcingDB in production. This release is our response to what you told us you needed most.

    Golo Roden4 min read
  15. Behind the Scenes

    The Port 6000 Mystery

    May 5th, 2025. After years of development, countless iterations, and exhaustive testing, we finally released EventSourcingDB 1.0. The CI/CD pipeline was green. All integration tests passed. The documentation was polished. We had tested the database on different ports, different operating systems, different deployment scenarios. Everything worked exactly as intended.

    Golo Roden8 min read
  16. Behind the Scenes

    KanDDDinsky 2025: Our First Time at Europe's Community-Driven DDD Conference

    Last week, my colleague Rendani and I found ourselves in Berlin's nhow hotel, surrounded by about 250-300 people who share our passion for Domain-Driven Design (DDD), Event Sourcing, and thoughtful software architecture. KanDDDinsky 2025 marked our first time attending this conference – not just as participants, but as sponsors and exhibitors for EventSourcingDB.

    Golo Roden6 min read
  17. Interview

    Rethinking CQRS: An Interview on OpenCQRS

    Golo: Frank, you are one of the managing directors at Digital Frontiers and also one of the architects and main developers of OpenCQRS. Over the past months we've seen a lot of interest in the framework, especially now with version 1.0 out. Some of our customers have even been building production systems with the release candidate for quite a while already, which shows how stable and usable it has been early on. Before we dive into details, let's start at the very beginning: can you tell us a bit about how OpenCQRS came to life? What triggered the idea and what gap were you trying to fill?

    Golo RodenFrank Scheffler11 min read
  18. Behind the Scenes

    Designing EventQL, an Event Query Language

    When we built EventSourcingDB, we didn't just create a storage engine for events. We wanted to give developers the right tools to work with those events in ways that are both practical and efficient. Very early on, we realized something important: while projections are great for predefined, recurring questions, they don't cover everything. Sometimes you need answers on the fly.

    Golo Roden8 min read
  19. Announcement

    Celebrating OpenCQRS 1.0

    Today we're thrilled to celebrate an important milestone for the Event Sourcing community: the release of OpenCQRS 1.0. Built by our friends at Digital Frontiers, OpenCQRS brings first-class support for CQRS and Event Sourcing to the JVM world, with native integration for EventSourcingDB. This release matters deeply to us, not just because it adds another powerful tool to the ecosystem, but because it represents collaboration, shared vision, and the steady growth of something we have believed in for more than a decade.

    Golo Roden8 min read
  20. Announcement

    .NET Client SDK 1.0 Now Available

    Today we're pleased to announce the release of the official .NET Client SDK for EventSourcingDB, version 1.0. With this release, .NET developers gain first-class support for building event-sourced applications with EventSourcingDB – bringing the same level of quality and ergonomics we've already delivered for Go, JavaScript/TypeScript, PHP, Python, and Rust.

    Golo Roden2 min read
  21. Behind the Scenes

    Ten Years, One Goal

    When we founded the native web back in 2012, our focus was straightforward: we wanted to share knowledge. At the time, JavaScript and Node.js were still newcomers in the enterprise world. We helped teams understand these technologies and make them productive. We ran workshops, taught trainings, and even wrote the first book in German language about Node.js. That period was about building a company – and building a community.

    Golo Roden9 min read
  22. Behind the Scenes

    Hello World

    Welcome to the official EventSourcingDB blog – your source for announcements, articles, and insights. When we launched EventSourcingDB, our documentation was the place to learn how to install, configure, and operate the database. But we quickly realized that something was missing: a space for timely updates, context around new features, and deeper explanations that don't fit neatly into a reference manual.

    Golo Roden3 min read