Cover of Fundamentals of Software Architecture by Mark Richards, Neal Ford - Business and Economics Book

From "Fundamentals of Software Architecture"

Author: Mark Richards, Neal Ford
Publisher: O'Reilly Media
Year: 2020
Category: Computers

🎧 Free Preview Complete

You've listened to your free 10-minute preview.
Sign up free to continue listening to the full summary.

🎧 Listen to Summary

Free 10-min Preview
0:00
Speed:
10:00 free remaining
Chapter 14: Event-Driven Architecture Style
Key Insight 1 from this chapter

Event-Driven Architecture Fundamentals and Asynchronous Communication

Key Insight

Event-driven architecture (EDA) is a popular distributed asynchronous architecture style renowned for producing highly scalable, high-performance, and adaptable applications, suitable for both small and large-scale systems. It is constructed from decoupled event processing components that asynchronously receive and process events. This style can be utilized as a standalone architecture or integrated within other architectural patterns, such as an event-driven microservices architecture.

EDA contrasts with the common request-based model, where requests are sent to a request orchestrator (e.g., user interface, API layer, or enterprise service bus). This orchestrator deterministically and synchronously directs requests to various processors, which then retrieve or update database information. An example of a request-based model is a customer retrieving their order history for the past six months, which represents a data-driven, deterministic request for specific data, rather than a reactive event. The event-based model, conversely, reacts to particular situations, taking action based on events, such as submitting a bid for an item in an online auction, where the system must respond to the event by comparing bids.

A core characteristic of EDA is its sole reliance on asynchronous communication for both 'fire-and-forget' processing (no response required) and 'request/reply' processing (response required). This significantly boosts overall system responsiveness. For instance, posting a comment on a website that takes 3000 milliseconds to process can yield a user response time of just 25 milliseconds asynchronously, compared to 3100 milliseconds synchronously. This highlights the difference between responsiveness (notifying the user that an action is accepted) and performance (making the end-to-end process faster). A caveat is that asynchronous communication offers a 'future promise' that the action will eventually be processed, making immediate synchronous error feedback challenging.

📚 Continue Your Learning Journey — No Payment Required

Access the complete Fundamentals of Software Architecture summary with audio narration, key takeaways, and actionable insights from Mark Richards, Neal Ford.