An event mesh is a dynamic infrastructure for sending notifications to applications across a distributed environment. In the context of event-driven architecture (EDA), an event is a change, action, or observation in a system that produces a notification, which is then sent to other systems that each react to the event. The event mesh makes these connections possible.
The dissemination of massive amounts of data across a highly distributed infrastructure has become a requirement for large enterprises. Mission-critical applications must be able to communicate in a reliable and timely manner in order to share the vital data they need to process the interactions and transactions that drive the business.
The challenge for the modern enterprise is how to move this data across infrastructure that is not just geographically dispersed but also exists in separate and heterogeneous clusters in a way that is efficient, scalable, and economical. The solution is the event mesh, an infrastructure designed to smoothly transport events across any environment—even between clouds in a seamless way.
To explain event mesh, first, we need to discuss event-driven architecture (EDA), a software architecture based on communication via "events." An event is a change, action, or observation in a system that produces a notification, which is then sent to other systems that each react to the event.
For example, an event can be triggered by a change to a customer billing address; or an action like placing a new order; or an observation of a battery charge level or a temperature reading from a sensor. Each event represents information to be consumed by other applications. Multiple consumers can receive the same message and utilize the associated data in their own way, to accomplish a specific job.
EDA's "asynchronous" event-based communication is better suited to this type of data transfer than more traditional "synchronous" communication. In synchronous messaging, two applications make a direct connection, most commonly via HTTP application programming interfaces (APIs), and both services must be available and responsive in order to successfully communicate. When a service is not available, the message can’t be processed, and the entire system might stall or even break down. Synchronous transmission is often not an ideal way to send large volumes of information to multiple systems across an enterprise.
Conversely, "asynchronous" communication is event-driven, allowing multiple applications to communicate simultaneously and rapidly, in near real time. Even if a system is not available to receive an event, the asynchronous nature of EDA guarantees the notification delivery once the system becomes available.
EDA requires no runtime coupling between event producer and consumer, which makes EDA optimal for modern, distributed applications.
Throughout the enterprise, hundreds or even thousands of events can be generated every minute. Organizations need an effective way to deliver a high volume of events to a range of applications deployed across a distributed combination of cloud and on-premise environments. The event mesh provides this capability for the event-driven enterprise.
An event mesh is a dynamic infrastructure that delivers events from producers to consumers via a network of interconnected "event brokers." Event mesh is environment-agnostic, designed to deliver events across disparate cloud platforms, no matter where the applications are deployed—public, private, and hybrid cloud, PaaS, the Internet-of-Things (IoT), and even no cloud—without the need for configuration of event routing.
The event mesh allows publishers to use their platform’s native event mechanisms and allows subscribers to do the same. Thus, a Node.js developer in a Kubernetes cluster can publish an event, and a Java developer in a different cluster could subscribe to the same. Any consumer can make use of the event regardless of the type of application; the development platform the application was built on; the streaming technology used for messaging; or the type of cloud the application is hosted on.
Because an event mesh can deliver information between applications regardless of their environment, event mesh supports a loosely coupled integration between legacy applications, databases and devices, and the latest microservice-based and cloud-native applications.
An event mesh can also work with and translate between a range of messaging service options. Apache Kafka is a popular choice for EDA messaging, particularly with cloud-native developers. Event mesh should also support other messaging options including Knative Eventing, Cloud Events, HTTP and AMQP, just to name a few.
Event mesh represents the mature stage of the EDA journey, once an enterprise has fully embraced the event-driven architecture. While asynchronous interactions and event-driven architectural patterns are not new, event mesh provides a ground-breaking new approach to integration that is positioned to become the communications infrastructure in the next-generation enterprise.
It is easy to get confused between service mesh and event mesh, because of the similar names. However, event mesh is not the same as a service mesh. While event mesh is asynchronous, service mesh supports more traditional synchronous request-reply messaging.
Event mesh and service mesh complement each other in the enterprise by providing two different but effective communication options, providing developers with the flexibility to choose what best fits the application they are designing. However, service mesh cannot serve as a replacement for event mesh, as service mesh does not support asynchronous event-driven communications, and are still best suited for single cluster deployments.
In order to meet the demands of the enterprise and the promise of event-driven architecture, an event mesh should offer the following must-have capabilities:
- Support for various messaging services, such as Kafka, Knative Eventing, HTTP, AMQP, and others.
- Fault tolerance for reliable message delivery, including automated recovery from network failures and fallback destinations for undeliverable messages.
- Support for multi-protocol bridges between disparate events, applications, and messaging platforms.
- Support for both on-premise and multi-cloud deployment.
- Support for multicast (all subscribers receive a copy of each message) or anycast (one subscriber receives a copy of each produced message) addresses.
- Secure connections and transmission of event messages.
An event-driven architecture together with an event mesh can support a wide range of use cases deployed across complex multi-cloud, widely distributed topologies using diverse application stacks. The following are just a sampling of the many potential event mesh use cases.
Event mesh easily connects microservices-based applications with each other, as well as with legacy technologies.
Event mesh enables rapid processing of transactions to ensure fast and highly reliable customer interactions via websites and apps.
Event mesh supports fast delivery of customer interaction data to enable support teams to respond to customers in real-time, and create a personalized experience.
Event mesh can provide low latency synchronization of real-time trading data to financial services providers. In addition, event mesh can convey information on suspect transactions in real-time to support fraud detection.
Event mesh delivers reliable and scalable Internet-of-Things (IoT) connectivity to back-end systems, to process metrics from an almost unlimited range of sensors.
Event mesh delivers the following bottom-line benefits to the business.
Business success is based on the ability to react to change. One of the main advantages of an event mesh is the delivery of data—as streams of events via an event-driven architecture—in real time, to enable timely responses. An event mesh is highly efficient, determining the fastest path between event producer and consumer, virtually eliminating messaging latency. This provides business stakeholders with the agility to react quickly to critical issues that demand time-sensitive decision-making.
Improved customer experience
Enabling real-time delivery of the data used by customer-facing teams and e-commerce technologies, event mesh helps organizations serve customers, ultimately improving the customer experience.
Reduced operation costs
By providing real-time visibility into manufacturing, sales, inventory, and shipping, event mesh enables organizations to optimize operations, drive efficiency, and reduce costs.
With the support of an event mesh—which is agnostic to different types of environments, messaging systems, and protocols—application developers can focus on implementing the business logic using the best technologies available. This frees developers to innovate without having to develop a complex data distribution network, and without limitations on the development environment, messaging platform, or type of cloud.