Event-driven architecture (EDA) is a way of building software in which parts of a system communicate by announcing that something happened, instead of calling each other directly. One component publishes an event, such as “invoice paid” or “contract signed.” Any other component that cares reacts to it. Neither side needs to know the other exists.
For a SaaS company, this matters well beyond engineering. The same idea sits behind clean CRM-to-finance handoffs, reliable automation and AI agents that act on current data. This guide explains how EDA works, how an event bus differs from a queue, how to avoid the common failures, and where it does and does not belong.
TL;DR
- An event-driven architecture has producers that emit events, a channel or broker that routes them, and consumers that react. Producers do not know who is listening.
- An event is a record that something happened. It either carries the data (price, address) or just an identifier pointing to it.
- A queue hands each message to one worker. Publish/subscribe delivers to every subscriber. An event stream keeps a durable log that new readers can replay.
- Kafka is a technology for event streaming. It is not an architecture by itself.
- EDA fits integration and automation across systems. It does not fit every workflow, and it should sit on clean data.
Table of Contents
- What event-driven architecture is
- What counts as an event
- How an event-driven system works, step by step
- Event-driven architecture and microservices
- Event bus vs. queue vs. stream
- Is Kafka an event-driven architecture?
- Event-driven integration and automation
- Best practices and common challenges
- Where event-driven design does not belong
- Where this meets AI agents and compliance
- Our perspective
- Getting started in your own company
- How we can help
- FAQ
- Sources
What event-driven architecture is
Microsoft’s architecture guidance describes the style as event producers that generate a stream of events, event consumers that listen for them, and event channels that carry events from one to the other. That three-part model is the whole idea. Everything else is detail about how reliably and how fast the channel works.
The contrast is with request/response. In a request/response design, your billing service calls your CRM and waits for an answer. If the CRM is slow or down, billing is stuck. In an event-driven design, billing publishes “payment received” and moves on. The CRM, the revenue report and the customer success dashboard each pick the event up when they are ready.
Two properties follow from this:
- Near real-time delivery. Events are delivered quickly so consumers can respond immediately.
- Decoupling. A producer does not know which consumers are listening, so you can add a new consumer without touching the sender.
What counts as an event
An event is a statement of fact in the past tense. Red Hat describes it as an immutable record that something happened, often with a timestamp that preserves ordering relative to the system that produced it. You do not edit an event afterward. If something changes, a new event records the change.
AWS notes that events can be a change in state or an update, and they can either carry state or be identifiers. Two examples:
| Style | Example | What the consumer gets |
|---|---|---|
| Event carrying state | Subscription upgraded, with plan, price, effective date, account ID | Everything needed to act without a second lookup |
| Event as identifier | Order shipped, with the order ID only | A signal. The consumer fetches details from the source system |
The first is convenient but couples consumers to the event’s shape. The second keeps events small but sends consumers back to the source system, which raises a question about which system is authoritative. We come back to that below, because it is where most SaaS operations stacks struggle.
A command is not an event. “Send the invoice” is an instruction to a specific recipient. “Invoice sent” is a fact anyone can react to. Mixing the two is a common design mistake and quietly rebuilds the tight coupling you were trying to remove.
How an event-driven system works, step by step
Google Cloud’s documentation lays out the flow: producers generate events, a router or broker ingests and filters them, and then fans them out to consumers based on subscriptions or triggers. In practice:
- Something happens. A deal moves to “Closed Won” in the CRM.
- The producer publishes an event. It states the fact and the record it concerns.
- The broker routes it. It filters and delivers the event to every subscriber.
- Consumers react independently. Finance creates an invoice draft. Customer Success opens an onboarding plan. A provisioning process prepares access.
- Each consumer acknowledges. The broker knows the event was handled and can retry if it was not.
IBM frames the same pattern as publication, capture, processing and storage of events, and points out that the value of an event can change over time. A “new lead” event is worth acting on in minutes. A year later it is mostly useful for analysis.
Event-driven architecture and microservices
People often treat these as the same thing. They are not. Microservices describe how you split an application into small, independently deployed services. EDA describes how those services communicate. You can have microservices that call each other synchronously, and you can have a monolith that publishes events internally.
The two work well together. Google’s guidance notes that microservices can react asynchronously to events and need to know only the event format, not each other’s business logic. That shared format is the contract. Everything behind it can change.
Microsoft’s documentation describes the typical pattern as microservices that publish an event when something notable happens, with other microservices subscribing.
Event bus vs. queue vs. stream
These three terms cause the most confusion, and the choice changes how your system behaves.
Event bus (publish/subscribe). An event bus is a mechanism where publishers announce events and subscribers receive them. Microsoft explains that it can be implemented on messaging infrastructure such as a queue or service bus that supports asynchronous publish/subscribe. So a queue can be one of the building blocks of a bus. The bus is the intent. The queue is one way to carry it.
Queue. A queue holds messages until a worker takes them. Each message is normally handled by one consumer. Queues are the right tool for spreading work across workers and for absorbing bursts. Azure’s integration guidance lists queuing messages when a back end is unavailable as one reason to use a broker.
Event stream. Azure separates publish/subscribe from streaming. In publish/subscribe, once an event is received it is not kept in a durable log, so new subscribers do not see past events. In streaming, events are written to a log that is durable and strictly ordered within a partition, and clients read from the log and can join at any time and replay events.
| Queue | Publish/subscribe bus | Event stream | |
|---|---|---|---|
| Delivery | One consumer per message | Every subscriber | Any reader, from any point |
| Past events | Removed after processing | Not available to new subscribers | Kept and replayable |
| Typical use | Work distribution, buffering | Notifying several systems | History, analytics, rebuilding state |
A practical rule: if you need several systems to react to the same fact, use publish/subscribe. If you need one worker to do a job, use a queue. If you need history or the ability to rebuild a downstream system, use a stream. Red Hat adds that there is no one-size-fits-all solution, so pick the technology by event type.
Is Kafka an event-driven architecture?
No. Kafka is a technology you can use to build one. The Apache Kafka documentation describes it as a platform for event streaming: capturing events in real time, storing them durably, processing them, and routing them to other systems. That makes it an event stream in the table above.
An architecture is a set of design decisions: what the events are, who owns them, how consumers are isolated, what happens on failure. You can make those decisions and run them on a managed cloud bus, a queue service or Kafka. You can also run Kafka and still have a tightly coupled system if every service depends on another service’s internal events. Choose the tool after you have defined the events and the volume you actually expect.
Event-driven integration and automation
This is where EDA becomes relevant to operations leaders rather than only engineers.
Integration
Most SaaS companies connect their CRM, billing, support and product data with point-to-point syncs. Each new tool adds another connection to maintain. Azure recommends asynchronous communication through a message broker instead of direct synchronous calls, for four reasons it lists: decoupling applications, broadcasting to multiple consumers, tracking long-running workflows reliably, and queuing messages when a back end is unavailable.
The benefit shows up when you add a system. With a publish/subscribe service, new subscribers can be added without updating the sender. Adding a new analytics tool does not require a change to your CRM.
Automation
Event-driven automation means a business process starts because something happened, not because someone clicked a button or a nightly job ran. ServiceNow’s flow guide gives a practical method: identify the trigger, plan the logic, select the actions, and identify reusable logic. It also recommends keeping flows focused and using one verb per action.
When a process spans several services, Microsoft notes that event-driven systems commonly use choreography and saga orchestration patterns to coordinate the flow. In choreography, each service reacts to events and emits its own. In orchestration, a coordinator tells each step what to do and tracks the whole process. For a first project, an orchestrated flow is usually easier to read and audit.
A simple SaaS example:
- Trigger: a customer’s renewal date is 90 days away.
- Consumers: Customer Success gets a task, Finance gets a forecast update, Sales gets a flag if the account is expanding.
- Control: each step records who or what acted, and anything touching a contract needs human approval.
Best practices and common challenges
Azure lists the main challenges: eventual consistency, asynchronous error handling, data loss, observability and testing, too many or overly consolidated events, and schema evolution. Each has a matching practice.
- Plan for eventual consistency. Systems will briefly disagree. Decide which system is authoritative for each fact and let the others follow it.
- Add a dedicated error handler. Failed events need a place to go and someone to look at them.
- Keep events until receipt is acknowledged. This protects against data loss when a consumer is down.
- Use correlation IDs. One ID carried through every step lets you trace a single customer action across systems.
- Balance event granularity. One event per field change creates noise. One giant event for everything recreates coupling.
- Version schemas early. Event formats will change. Decide how before you have twenty consumers.
To these we would add three operational habits: name events in the past tense, give each event type one owner, and write down which consumers depend on it.
Where event-driven design does not belong
EDA is not the answer to every problem. Be explicit about the limits before you commit:
- Anything that needs an immediate answer. If a user is waiting for a price or a permission check, a direct call is simpler and clearer.
- Messy source data. Events spread whatever is in the source system. If the CRM has duplicate accounts and the finance system uses different customer IDs, events will carry that disagreement everywhere faster.
- Judgment calls. Contract exceptions, pricing approvals and anything with legal consequences need a person. An event can notify that person. It should not replace them.
- Small, stable stacks. If you have three tools and a simple sync works, adding a broker adds cost and moving parts without a payoff.
- Teams with no owner. An event system with no one accountable for event definitions drifts into a mess that is hard to untangle.
The same logic applies to AI. An AI assistant that reads and acts on your systems is a consumer and producer of events. If it reads inconsistent data or acts without a permission boundary, you have a faster way to make errors.
Where this meets AI agents and compliance
AI agents that pull data (ask, report, look up) and push data (update a record, trigger a process, provision access) behave like participants in an event-driven system. They need a trusted source to read, a clear set of actions they may take, approval for sensitive steps and a record of what they did. An event log is a natural place for that record.

For European companies, GDPR, NIS2 and the EU AI Act all affect how such systems are designed. In general terms, they bear on what personal data flows through events, how security and incident handling are organized, and how AI systems are governed and documented. Treat them as design inputs from the start, and take legal advice from counsel on how they apply to your specific case. No architecture choice on its own makes a system compliant.
Our perspective
Most SaaS companies we talk to do not have an event problem. They have an ownership problem. Several teams use AI, several tools hold a version of the customer, and nobody is accountable for which version is right.
That is why we work in a fixed order. First the data foundation: the CRM and finance data as the agreed source of truth. Then the AI layer, connecting that data to the assistant your team already uses. Then department agents for Finance, Sales and Customer Success. Events are useful in all three layers, but they only help once the facts they carry are agreed.
We also adopt one process at a time, starting with the most expensive one. A renewal process or an invoice-to-cash handoff is a better first event-driven project than a company-wide rebuild. You see the result, your people learn the pattern, and the next process is cheaper.
Because we run operations as well as design systems, we care about the boring parts: permissions, approvals, audit trails and a handover where you own the code, documentation and infrastructure.
Claus Nielsen
Getting started in your own company
You do not need to choose a broker first. Start with these questions:
- Which process costs you the most in manual work, delay or errors?
- What are the two or three events that start it (for example, deal closed, invoice overdue, renewal approaching)?
- Which system is the source of truth for the data in those events?
- Who owns each event definition?
- Which steps need human approval?
If you cannot answer the third question, the data foundation comes first. If you can, a small pilot on one process will show you whether an event-driven approach pays.
How we can help
If your team is using AI but nobody owns it, we can help you decide where it pays and build it in the right order. Our AI Readiness Assessment is available from €4,500 and looks at your data, systems and processes before anything is built. If you want ongoing leadership, the Fractional Chief AI Officer retainer starts from €1,500 per month.
Builds are priced at 30% of a first-year saving that is measured and proven, or at a fixed price agreed before work starts. You can also book a free 30-minute discovery call through our site. Our AI agents for Finance, Sales and Customer Success show what the department layer looks like once the foundation is in place.
FAQ
What is event-driven architecture in simple terms?
It is a design where software components announce that something happened, and other components react. The sender does not know who is listening. This lets you add or change systems without rewriting the ones that produce the events.
What is the difference between an event bus and a message queue?
A queue usually delivers each message to one worker. An event bus delivers each event to every subscriber. A bus can be built on queue infrastructure, so the difference is in the intent and the delivery pattern, not always in the product.
Is event-driven architecture the same as microservices?
No. Microservices are about how an application is split into services. Event-driven architecture is about how parts communicate. They are often used together, but each can exist without the other.
When should a SaaS company use event-driven automation?
Use it when a business process should start from a fact, such as a closed deal or an approaching renewal, and several teams or systems need to react. Start with one costly process and make sure the source data is agreed first.
Sources
- Event-Driven Architecture Style, Azure Architecture Center
- Event-Driven Architecture, AWS
- What is an event? Red Hat Developer
- Event-driven architectures, Eventarc Standard, Google Cloud
- What Is Event-Driven Architecture? IBM
- Implementing event-based communication between microservices, Microsoft
- Use a message broker and events to integrate enterprise systems, Azure
- Workflow Automation Flow Guide, ServiceNow SDK
- Introduction, Apache Kafka documentation