Designing Event-Driven Architectures

An event-driven architecture (EDA) is a plan for how data will flow through your application. It can be helpful to decompose these architectures into different handlers that are responsible for performing operations on the data (e.g. ingestion, statistical inference, prediction) and routing it between the layers of your application via the topics.

Publishers and subscribers route data between the layers of a sample application from ingestion to analytics to the Web UI.

Handlers usually fall into two categories, “Publishers” and “Subscribers”. Publishers are responsible for writing data to topics, while consumers read data from those topics and perform some transformation on it (e.g. feature extraction, normalization, standardization, de-noising, model training). Some layers of your application may include both a publisher and a subscriber, or even multiple subscribers and publishers!

In the figure above, we have an architecture for a lightweight Python web-based application that uses raw data from a streaming weather API, trains an online model, predicts the weather for tomorrow, and displays it alongside a timeseries plot of the last two weeks of weather reports.

call to action

Feeling stuck?

You don’t have to tough this out on your own. We’re nice and easy to talk to.

Just Ask!