Event Driven Design

Adam Jones' headshot

Adam Jones

Director of Engineering, PeakActivity



Event Driven Design

Adam Jones

Director of Engineering, PeakActivity

Graphic image of a speech bubble with code brackets above the words "Talking Tech"
Graphic image of a speech bubble with code brackets above the words "Talking Tech"

Our hyper-connected lives move at an astonishing speed. Amazon Prime same-day delivery. Highly matrixed virtual organizations. Meme-stock frenzies. The applications that make all these things possible are continually evolving and, as a result, the data which supports them is multiplying ever exponentially.

Data, represented by user interactions or external and internal inputs like system or component changes, are a never-ending stream of events that applications are expected to manage seamlessly. For many platforms, the application is expected (or components therein) to easily shift as demands change. However, like many things in life, expectations don’t always live up to reality. In this article, we’ll attempt to demystify event-driven architecture while illustrating the advantages of implementing this architectural pattern.

Event driven design graphic

Advantages to Event-Driven Architecture

Platforms that aren’t concerned with eventual consistency and can manage the infrastructure needed to support event-driven designs are more apt to take advantage of its benefits. Here are a few examples of why event-driven architecture can be an advantage over other architectures.

Loosely Coupled Systems

Event-driven designed systems decouple components, separating ownership of domain data. The loose coupling creates a logical separation between event producers and consumers. Producer services emit events and intentionally do not concern themselves with how the messages are consumed. While subscribing services consume events and intentionally do not concern themselves with how the message was produced, only needing to interpret the payload, you should always aim to have a strict contract between the systems.

Decoupled services can be implemented in different technologies, the right tool for the job, and can be more easily scaled independently of each other. The application or platform inherently becomes more extensible, enabling new features to be onboarded with much less risk of integration regression. 

Resilience & Scalability

While resilience, defined as the capability to recover from stress on load or failures in the system, is not specific to event-driven designs, the very nature of how events are brokered offers an additional advantage. Messages that fail to be processed by a down-consuming service are persisted and can be replayed when the downed system comes back online. This is sometimes known as point-in-time recovery.

Decoupling services using event-driven design means services can independently scale to meet the demands of the platform. This can greatly reduce the cost of infrastructure ownership. Combined with the serverless model and stateless design pattern, systems can infinitely scale with little effort.

Push Notifications & Event Streams

In polling or pull-based architecture, there is a request-response mechanism. The querying system polls for messages at intervals. The event-based architecture allows messages to be broadcast through a broker that consumers can subscribe to and wait for. The result is a less chatty client-service platform often resulting in fewer infrastructure resources.

Event streams help businesses react to real-time changes in information enabling applications to make quicker decisions and provide a more engaging experience for the consumer. Real-time analysis is ideal for eCommerce systems where fraud detection, order routing, product inventory, and predictive analytics are deeply valued. 

Single Source of Truth

The practice of building information models and associated data structures so that fields of data are modified in only one place is often referred to by the term, “single source of truth.” Persisting the data with immutable events, using patterns like event-sourcing, is a key component of any resilient scalable system. As mentioned above, events can be replayed at any time allowing for failed systems to more effectively come back online, and new systems to more easily integrate.

Black man with short locs smiling at the camera while coding on a laptop

Event Driven Solutions

The complexity of building the event aggregate component has all but been solved. There are a wide array of solutions available, such as self-managed software and cloud-based platforms. Examples of narrowly focused messaging brokers are RabbitMQ, ZeroMQ, and ActiveMQ utilizing MQTT, a lightweight pub/sub-machine-to-machine network protocol. Examples of more robust messaging systems include Apache Kafka and Apache Pulsar. While both of these examples use custom binary protocols over TCP they do support interoperability with AMQP and MQTT natively. The two most well-known managed platform offerings are, Confluent using Apache Kafka and DataStax Astra Streaming using Apache Pulsar.

Platform as a Service organizations like Amazon Web Services and Microsoft Azure offer event aggregation messaging systems as well. AWS offers Simple Notification Service (SNS) and Simple Queue Service (SQS), and Azure offers tools like Event Grid, Event Hubs, Service Bus, and Relay to manage and deliver event messages.

Close up shot of two software engineers working on implementing a new architecture

Powerful by Design

Event-driven design is an innovative approach to system design that offers efficiencies and flexibility for organizations looking to quickly address the events that matter the most to their business. Event-driven design is a powerful tool for achieving an event-driven organization where actions trigger immediate responses, increasing agility and scaling to meet customer needs.

Learn more about PeakActivity’s technology modernization services to see if they’re right for you.

Want even more educational content?

Subscribe below to get timely content delivered to your inbox,
or fill out the form below to speak to a Peakster about your next project.



Top 10 Photos of Developers Staring At Screens



5 Ways Retailers Can Make Influencer Marketing More Influential



How Many Emails is Too Many?