Store State as an Event Log with Event Sourcing
Store State as an Event Log with Event Sourcing — Event sourcing flips how you think about state. Instead of storing the current state of something, y.
50 articles
Store State as an Event Log with Event Sourcing — Event sourcing flips how you think about state. Instead of storing the current state of something, y.
The most surprising truth about event stores is that they're not just databases for events; they're the time machine for your application's state.
Kafka is fundamentally a distributed commit log, not a message queue, and that difference is the key to its ability to handle event streams at scale.
The most counterintuitive truth about achieving exactly-once event processing is that it doesn't actually guarantee zero duplicates; it guarantees zero .
The "fan-out" pattern isn't just about sending one message to many listeners; it's fundamentally about decoupling the event producer from the event cons.
Cloud Pub/Sub is surprisingly bad at reliably delivering messages to all subscribers simultaneously, and that's precisely why it's so good at building e.
A surprising truth about event-driven systems is that, by design, they are inherently unreliable. Let's see what that means in practice
The Transactional Inbox pattern is a clever way to ensure that event consumers don't lose messages, even if they crash halfway through processing.
Share State Across Microservices with Integration Events — practical guide covering event-driven setup, configuration, and troubleshooting with real-wor...
Build Reliable Kafka Consumers for Event-Driven Systems — practical guide covering event-driven setup, configuration, and troubleshooting with real-worl...
RabbitMQ doesn't queue events; it routes messages that represent events to queues, and consumers then process those messages.
Microservices can coordinate their actions in two fundamentally different ways, and understanding the difference is crucial for building robust, scalabl.
Observe Event-Driven Systems: Tracing, Metrics, and Logging — practical guide covering event-driven setup, configuration, and troubleshooting with real-...
The only way to guarantee event ordering across all consumers for a given event type is to ensure that all events of that type are routed to a single pa.
The transactional outbox pattern is a way to guarantee that an event published by your application is either successfully saved to your database and sen.
When you partition events by key, you're essentially ensuring that all events associated with a specific identifier like a user ID, session ID, or devic.
Event-driven architectures aren't just about decoupling services; they're fundamentally about managing state transitions across distributed systems in a.
The core reason event-driven systems feel slow is usually because their internal queues are backing up, not because the individual events are taking a l.
The fundamental purpose of an event producer is to reliably get an event from point A your application to point B the event bus.
Event-driven architecture is fundamentally a distributed system design that prioritizes loose coupling and asynchronous communication to achieve resilie.
The core problem with real-time analytics is that the data is never truly "real-time" without a system that can process events as they happen, not in ba.
A surprising number of systems that appear to be failing are actually just overloaded, and the most effective way to handle this is to deliberately slow.
A distributed transaction is not a single atomic operation; it's a series of independent, observable operations that appear atomic to the user.
A saga is a sequence of local transactions where each transaction updates data within a single service and publishes a message or event to trigger the n.
Event-driven systems scale by distributing the processing of events across multiple instances. This is achieved through partitioning, sharding, and fan-.
The most surprising truth about evolving event schemas is that you can usually break the "never break consumers" rule – you just have to break it smartl.
Event-driven systems are often treated as ephemeral, but their security needs are as concrete and critical as any request-response API.
Serverless functions, at their core, are event-driven automatons, but the systems that trigger them are often more complex than they appear.
Decouple Services in Time with Async Event-Driven Architecture — practical guide covering event-driven setup, configuration, and troubleshooting with re...
The most surprising thing about testing event-driven systems end-to-end without mocking is that you can achieve high confidence by focusing on the inter.
Replaying historical events in an event-driven system isn't just about debugging; it's the closest you'll get to time travel for your application logic.
Version Events to Add Fields Without Breaking Consumers — practical guide covering event-driven setup, configuration, and troubleshooting with real-worl...
Event-driven architectures are often pitched as the modern, scalable way to build systems, but the truth is, they're just a different way of managing st.
The most surprising thing about event aggregation is that it's often not about collecting events, but about discarding them until you have something mea.
The most surprising thing about event-driven systems is how easily they can become a distributed monolith, locking you into tight coupling disguised as .
Event-driven architecture EDA is fundamentally about decoupling services by having them react to state changes rather than directly calling each other.
Build Event-Driven Systems on AWS with EventBridge — practical guide covering event-driven setup, configuration, and troubleshooting with real-world exa...
Azure Event Grid is the glue that lets you connect disparate Azure services, and when you want to kick off an Azure Logic App or Azure Functions workflo.
Event-driven systems can gracefully handle situations where producers generate events faster than consumers can process them, preventing data loss by em.
Debezium doesn't just read database changes; it transforms them into a stream of immutable events that can be processed by other systems.
The most surprising thing about scaling event consumers horizontally with consumer groups is that it fundamentally changes how events are delivered, mov.
You can test event consumers without a running Kafka broker by using an embedded Kafka broker. This is how you can spin up an embedded Kafka broker and .
Contract testing is your best friend for preventing breaking changes in event-driven systems, and the most surprising thing is how little it actually te.
CQRS is often pitched as a way to separate your read and write models, but the real magic happens when that separation allows your write side to publish.
The most surprising thing about Dead Letter Queues DLQs is that they aren't primarily for dead events, but for sick ones that need attention.
Tracing requests across event-driven services is less about tracking a single request and more about reconstructing a story from fragmented conversation.
Model Business State Changes as Domain Events — practical guide covering event-driven setup, configuration, and troubleshooting with real-world examples.
A service event catalog isn't just a list of events; it's the operational memory of your distributed system, allowing you to understand what's happening.
The most surprising thing about replaying past events is that it's often the only way to reliably rebuild your system's state after a disaster.
The most surprising thing about enforcing event schemas is that you're not actually enforcing them everywhere – you're enforcing them at the seams of yo.