{{announcement.body}}
{{announcement.title}}

Demystifying the Event-Driven Architecture — Making the Case

DZone 's Guide to

Demystifying the Event-Driven Architecture — Making the Case

This second article in the series pivots back to looking at use cases that align to using EDA solutions and presents a few real world examples.

· Integration Zone ·
Free Resource

High throughput, resiliency, scalability and speed—are you searching for a way to leverage microservice integration to handle all the event-driven communications in your growing architecture landscape?

Search no further. 

This series of articles guides you through the world of integration using microservice architecture and specifically explores the world of Event Driven Architecture (EDA). It’s a central story to organizations moving forward into the digital world and is worth exploring as part of your strategy for continued success.

The first article was introducing how EDA might be the right choice for your microservice integration solutions,  with a more detailed examination of when you might not need EDA at all. This article pivots back to looking at use cases that align to using EDA solutions and presents a few real world examples. Lastly, we’ll look at the open technologies that can help you to implement an EDA architecture.

Cases for EDA

One of the most appealing aspects of EDA is that it fits into the real world seamlessly. A bold statement, but when looking at how enterprise applications are designed in the digital economy, you’ll notice they are largely event driven.

EDA is the ideal architecture for enterprise applications that derive the most benefit from scalable and reliable real-time communication, such as stream processing, data integration, and website activity tracking.

Let’s start with a look at the use case for processing a stream of events fits nicely into an EDA.


Stream Processing

EDA enables developers to build applications designed to react to, process, or transform multiple streams of events in real time. 

A stream is a continuous flow of events sent from a producer or multiple producers

The advantages of EDA for stream processing applications include scalability to handle large amounts of streaming data, and the reliability to ensure the lines of communication are kept open. 

One excellent example of stream processing that makes a great fit with EDA is Internet-of-Things (IoT) monitoring. 

IoT involves data being sent out to the edge of your network, such as to mobile devices, where timely delivery of events is of great significance

IoT relies on machine-learning (ML) microservices to process events in a timely manner, to enable proactive repair, and replacement of mission-critical devices before they disrupt the system. This capability is crucial to any IoT operation, which relies on the continuous operation of many devices, all delivering up-to-the-minute data. EDA's reliable, low-latency event-streaming architecture makes real-time processing of ML models possible in the IoT environment.

Another compelling example of stream processing that can benefit from EDA is financial fraud detection—the discovery, identification, and remediation of intentional misrepresentation of financial data. Critical fraud detection applications enable real-time and historical analysis of customer behavior across multiple systems such as credit, banking, and trading. Detecting financial fraud requires near zero latency between the actual event—the fraud itself—and the identification and remediation. EDA enables shared, reliable, low-latency event distribution so all stakeholders have access to timely and consistent data, in order to gain maximum visibility.


Data Integration

EDA is well-suited for developing data integration applications responsible for capturing, aggregating, and processing data from multiple diverse sources and presenting it in a single, unified view, or feeding that data to a variety of other disconnected systems. Data integration applications provide indispensable support for decision makers in a variety of industries, with up-to-date, accurate and easily accessible information.

As Christina Lin, Red Hat Principal Technical Marketing Manager has noticed, “ ...you have a lot more volatile events with an increasing number of IOT or Edge devices. And it's impossible to store all this data. And the traffic can be fluctuated depending on how busy it is in a day, we need a better way to handle large volume for peak traffic.”

Data integration can be used to process streams of events for real-time monitoring, alerting and analysis, while concurrently sending that same data to another system for retention and historical analysis. Traditional monolithic synchronous applications each store their own data separately, typically in a relational database that other applications cannot easily access. The asynchronous nature of EDA supports a shared data store, enabling applications to more easily access data from multiple sources, and also share data across the entire enterprise. All the related applications and systems can use the same accurate real-time information without compromising the integrity of the data.

One example of a data integration application built upon EDA is a retail dashboard which delivers real-time trends to decision makers while simultaneously saving the same data to enterprise data lakes for later analysis. EDA enables the application to process billions of events every day—involving pricing, transactions, inventory and more— to provide a retailer with real-time granular visibility into the metrics that define business success and failure.

Another example of data integration based on EDA is an application that tracks customer interactions. EDA enables the application to process data concurrently for usage by both internal systems and customer-facing web and mobile applications. While delivering essential customer insights to the business, the application also provides customers with timely information about their accounts and transactions, ensuring that both the company and its customers have access to the same accurate and up-to-date data.

Christina sums it up nicely, “I would say if you want to have a more scalable and flexible system, with real time processing for distributed deployments. You need EDA.”


Website Activity Tracking

EDA is very helpful to developers building applications that track user activity on websites. This type of application provides a company with visibility, in terms of both customer activity and website performance. Each customer interaction on the website—from page views and ad clicks to ecommerce transactions—is consumed and processed as an event by EDA, and the resulting metrics are sent to multiple consumers. For the business, this provides insight into the customer's interest, and potentially triggers automated suggestions for additional products and services based on the customer's perceived needs. Concurrently, the data is sent for analysis by other applications, to forecast product demand, for example.

This same type of EDA application can be used to serve ads to website visitors in real time. Ad serving requires split-second event processing with zero latency in order to automatically deliver the right ad to the right customer at the right time.

This is not a complete listing of all use cases lending themselves to EDA, but they give you solid examples of where EDA can shine.


What’s next?

The final article in this series shall touch on the business value of EDA along with a look at providing an open technology based solution for your EDA.

If you’re interested in exploring EDA solutions using open source technologies, then take a look at getting started with event-driven architecture using Apache Kafka or this free e-book on designing event-driven applications.

Topics:
architects ,architecture ,containers ,developer ,event driven architecture ,events ,integration ,microservices ,red hat ,use cases

Published at DZone with permission of Eric D. Schabell , DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}