Event Driven Architecture (EDA) in Microservices
Learn Event Driven Architecture (EDA) with Kafka, RabbitMQ, Event Producers, Consumers, Topics, Event Streaming, CQRS, Event Sourcing, Saga Pattern, and Enterprise Microservices Architecture.
What You Will Learn
- What is Event Driven Architecture?
- Why EDA is Needed
- Events, Producers, Consumers
- Event Brokers
- Kafka Architecture
- RabbitMQ Architecture
- Event Streaming
- CQRS Integration
- Event Sourcing Integration
- Saga Integration
- Enterprise Use Cases
- Interview Questions
Introduction
Traditional systems use:
Request
↓
Response
↓
Request
↓
Response
Example:
Order Service
↓
Inventory Service
↓
Payment Service
↓
Notification Service
Services directly call each other.
Problems:
Tight Coupling
Slow Response Time
Poor Scalability
Failure Propagation
Event Driven Architecture solves these problems.
What is Event Driven Architecture?
Event Driven Architecture (EDA) is a software architecture where systems communicate using events.
Instead of:
Service A Calls Service B
Use:
Service A Publishes Event
↓
Interested Services Consume Event
Purpose of EDA
Primary Goal:
Loose Coupling
Through Events
Traditional Architecture
flowchart LR
A[Order Service]
B[Inventory Service]
C[Payment Service]
D[Notification Service]
A --> B
B --> C
C --> D
Strong dependencies.
Event Driven Architecture
flowchart LR
A[Order Service]
B[Event Broker]
C[Inventory Service]
D[Payment Service]
E[Notification Service]
A --> B
B --> C
B --> D
B --> E
Loosely coupled.
Real World Analogy
Think about:
Airport Announcement System
Announcement:
Flight Delayed
Listeners:
Passengers
Airport Staff
Ground Crew
Announcement doesn't know who listens.
Same concept in EDA.
Core Components
Events
Producers
Consumers
Event Broker
What is an Event?
An event represents:
Something That Happened
Examples:
OrderCreated
PaymentCompleted
ClaimApproved
AccountOpened
Event Characteristics
Immutable
Past Tense
Business Meaningful
Timestamped
Event Example
{
"event":"OrderCreated",
"orderId":"1001",
"amount":500
}
Event Producer
Producer creates events.
Example:
Order Service
publishes:
OrderCreated
Producer Flow
flowchart LR
A[Order Service]
B[OrderCreated Event]
A --> B
Event Consumer
Consumer receives events.
Examples:
Inventory Service
Payment Service
Notification Service
Consumer Flow
flowchart LR
A[OrderCreated Event]
B[Inventory Service]
C[Payment Service]
D[Notification Service]
A --> B
A --> C
A --> D
Event Broker
Acts as:
Middle Layer
between producers and consumers.
Popular Brokers:
Kafka
RabbitMQ
ActiveMQ
AWS SNS
Google PubSub
Event Broker Architecture
flowchart LR
A[Producer]
B[Broker]
C[Consumer]
A --> B
B --> C
Event Lifecycle
Generate Event
↓
Publish Event
↓
Store Event
↓
Consume Event
↓
Process Event
Event Flow
flowchart LR
A[Business Action]
B[Create Event]
C[Broker]
D[Consumers]
A --> B
B --> C
C --> D
Order Processing Example
Customer places order.
Event Produced
OrderCreated
Consumers
Inventory Service
Payment Service
Shipping Service
Analytics Service
Order Workflow
flowchart LR
A[Order Service]
B[OrderCreated Event]
C[Inventory Service]
D[Payment Service]
E[Shipping Service]
F[Analytics Service]
A --> B
B --> C
B --> D
B --> E
B --> F
Kafka Overview
Kafka is the most popular EDA platform.
Key Concepts:
Producer
Topic
Partition
Consumer
Consumer Group
Kafka Architecture
flowchart LR
A[Producer]
B[Kafka Topic]
C[Consumer 1]
D[Consumer 2]
A --> B
B --> C
B --> D
Kafka Topic
Topic stores events.
Example:
orders
payments
customers
Kafka Topic Flow
flowchart LR
A[Order Service]
B[Orders Topic]
C[Inventory Consumer]
D[Analytics Consumer]
A --> B
B --> C
B --> D
Kafka Consumer Groups
Multiple consumers.
Example:
Inventory Group
Analytics Group
Notification Group
Each receives events independently.
Consumer Group Architecture
flowchart LR
A[Kafka Topic]
B[Inventory Group]
C[Analytics Group]
D[Notification Group]
A --> B
A --> C
A --> D
RabbitMQ Overview
RabbitMQ uses:
Exchange
Queue
Consumer
RabbitMQ Architecture
flowchart LR
A[Producer]
B[Exchange]
C[Queue 1]
D[Queue 2]
E[Consumer]
A --> B
B --> C
B --> D
C --> E
Kafka vs RabbitMQ
| Feature | Kafka | RabbitMQ |
|---|---|---|
| Throughput | Very High | High |
| Event Replay | Yes | Limited |
| Streaming | Excellent | Moderate |
| Ordering | Strong | Moderate |
Event Streaming
Events continuously flow.
Example:
Order Events
Payment Events
User Events
Inventory Events
Streaming Flow
flowchart LR
A[Producer]
B[Event Stream]
C[Consumers]
A --> B
B --> C
Banking Example
Fund Transfer Completed.
Event:
TransferCompleted
Consumers:
Fraud Service
Audit Service
Notification Service
Banking Architecture
flowchart LR
A[Transfer Service]
B[Transfer Event]
C[Fraud Service]
D[Audit Service]
E[Notification Service]
A --> B
B --> C
B --> D
B --> E
Insurance Example
Claim Approved.
Event:
ClaimApproved
Consumers:
Payment Service
Audit Service
Email Service
Insurance Workflow
flowchart LR
A[Claim Service]
B[ClaimApproved]
C[Payment Service]
D[Email Service]
E[Audit Service]
A --> B
B --> C
B --> D
B --> E
Retail Example
Order Created.
Consumers:
Inventory
Shipping
Analytics
Recommendations
Retail Architecture
flowchart LR
A[Order Service]
B[Order Event]
C[Inventory]
D[Shipping]
E[Analytics]
A --> B
B --> C
B --> D
B --> E
EDA + CQRS
Commands generate events.
Queries read projections.
CQRS Integration
flowchart LR
A[Command]
B[Event]
C[Projection]
D[Read Model]
A --> B
B --> C
C --> D
EDA + Event Sourcing
Events become source of truth.
Event Sourcing Integration
flowchart LR
A[Events]
B[Event Store]
C[Current State]
A --> B
B --> C
EDA + Saga
Saga coordinates distributed transactions through events.
Saga Flow
flowchart LR
A[OrderCreated]
B[InventoryReserved]
C[PaymentCompleted]
D[ShipmentCreated]
A --> B
B --> C
C --> D
Real Enterprise Architecture
flowchart LR
A[API Gateway]
B[Order Service]
C[Kafka]
D[Inventory Service]
E[Payment Service]
F[Notification Service]
G[Analytics Service]
A --> B
B --> C
C --> D
C --> E
C --> F
C --> G
Benefits
✅ Loose Coupling
✅ Scalability
✅ High Throughput
✅ Fault Tolerance
✅ Event Replay
✅ Asynchronous Processing
✅ Cloud Native Friendly
Challenges
❌ Eventual Consistency
❌ Complex Debugging
❌ Event Ordering
❌ Monitoring Complexity
❌ Distributed Tracing
Enterprise Use Cases
Banking
Payments
Transfers
Fraud Detection
Insurance
Claims
Policies
Premium Processing
Retail
Orders
Inventory
Shipping
Healthcare
Patient Events
Medical Records
Travel
Bookings
Notifications
Payments
When To Use EDA
Use when:
Microservices
Kafka
High Throughput
Asynchronous Workflows
Cloud Native Applications
When NOT To Use
Avoid when:
Simple CRUD Applications
Small Monoliths
Synchronous Business Flows
Interview Questions
What is Event Driven Architecture?
An architecture where services communicate through events.
Main Components?
Producer
Consumer
Event
Broker
Kafka Role?
Acts as event broker and streaming platform.
Benefits?
Loose coupling and scalability.
Drawbacks?
Eventual consistency and complexity.
Difference Between REST and EDA?
REST is synchronous.
EDA is asynchronous.
EDA and CQRS Relationship?
CQRS often uses EDA for communication.
Key Takeaways
- Event Driven Architecture is the foundation of modern distributed systems.
- Services communicate using events instead of direct calls.
- Kafka and RabbitMQ are common implementations.
- Enables loose coupling, scalability, and resilience.
- Works naturally with CQRS, Event Sourcing, Saga, and Outbox patterns.
- Widely used in Banking, Insurance, Retail, Healthcare, and Cloud Native platforms.
- One of the most important architecture patterns for modern microservices.