liveBook · Manning

Event-driven architecture

As explained in Kafka for Architects

An event-driven system is a software system whose components react to events rather than relying primarily on direct synchronous interactions.

Event-driven architecture (EDA) organizes a system around the production, consumption, and handling of events. When something changes, a service publishes a notification to an intermediary channel; interested services consume it and react independently. Unlike a request-response workflow, the publisher does not need to call each recipient directly. section 1.1.1 section 1.1

A customer address changes

Rather than calling a customer service whenever it needs an address, an order service listens for address-change events and keeps a local copy. Other interested services can receive the same notification. If the order service is temporarily offline, it can process the notification when it returns; if the customer service is offline, the order service can continue using its local copy. section 1.1.1

Figure 1.2 The EDA style of communication: systems communicate by publishing events that describe changes, allowing others to react asynchronously.
A black background with white text

Description automatically generated

The diagram shows the central change in interaction: services publish changes for other services to handle asynchronously instead of calling them directly. section 1.1.1

Kafka can provide the shared channel: producers publish events, and multiple consumers react. Retaining events for a configured period lets a subscriber recover from a failure and reprocess them. This decoupling supports independent services, but it does not remove consistency problems. Designs must account for eventual consistency, idempotency, out-of-order events, and whether messages actually reach their consumers. section 1.0 section 1.7.1 section 1.1 section 5.1.1

Events also become contracts between systems: their structure and meaning need modeling, validation, and versioning. Kafka is one possible backbone, not a requirement for EDA. Choose it against the workload’s needs; it is strong for high-rate, low-latency processing of small messages, but may be a poor fit for strict ordering, batch transfers, or random data access. section 1.5 section 5.1.1 section 5.5

How Kafka for Architects covers it

How deep it goes
Defines the interaction pattern and examines reliability, consistency, and data-contract consequences without walking through client code.
Examples
Illustrates address-change notifications, independently reacting order services, and one order event serving inventory, payment, shipping, and analytics.
What it assumes
Starts with familiar service-to-service request-response interactions and defines the event-driven alternative without requiring Kafka client programming.
What you can do after
Evaluate/understand when asynchronous event delivery improves service independence and which consistency, delivery, and workload trade-offs need attention.
How it connects
Connects event-driven architecture to publish-subscribe, eventual consistency, idempotency, schema governance, and CQRS.

Also explained in

Compare how 10 books explain event-driven architecture →

Related concepts

This explainer was generated by Manning's knowledge graph from the text of Kafka for Architects. The section links point to the parts of the book it draws on.