DEV Community

Cover image for System Design: Event-Driven Architecture (EDA)
Karan Pratap Singh
Karan Pratap Singh

Posted on • Originally published at github.com

10

System Design: Event-Driven Architecture (EDA)

Event-Driven Architecture (EDA) is about using events as a way to communicate within a system. Generally, leveraging a message broker to publish and consume events asynchronously. The publisher is unaware of who is consuming an event and the consumers are unaware of each other. Event-Driven Architecture is simply a way of achieving loose coupling between services within a system.

What is an event?

An event is a data point that represents state changes in a system. It doesn't specify what should happen and how the change should modify the system, it only notifies the system of a particular state change. When a user makes an action, they trigger an event.

Components

Event-driven architectures have three key components:

  • Event producers: Publishes an event to the router.
  • Event routers: Filters and pushes the events to consumers.
  • Event consumers: Uses events to reflect changes in the system.

event-driven-architecture

Note: Dots in the diagram represents different events in the system.

Patterns

There are several ways to implement the event-driven architecture, and which method we use depends on the use case but here are some common examples:

Note: Each of these methods is discussed separately.

Advantages

Let's discuss some advantages:

  • Decoupled producers and consumers.
  • Highly scalable and distributed.
  • Easy to add new consumers.
  • Improves agility.

Challenges

Here are some challenges of event-drive architecture:

  • Guaranteed delivery.
  • Error handling is difficult.
  • Event-driven systems are complex in general.
  • Exactly once, in-order processing of events.

Use cases

Below are some common use cases where event-driven architectures are beneficial:

  • Metadata and metrics.
  • Server and security logs.
  • Integrating heterogeneous systems.
  • Fanout and parallel processing.

Examples

Here are some widely used technologies for implementing event-driven architectures:


This article is part of my open source System Design Course available on Github.

AWS GenAI LIVE image

How is generative AI increasing efficiency?

Join AWS GenAI LIVE! to find out how gen AI is reshaping productivity, streamlining processes, and driving innovation.

Learn more

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs