The Enterprise Service Bus (ESB) is a central component of a distributed system that connects components and applications together. So what exactly is it? In this tutorial, I will introduce with all you.
Why do we need ESB?
Imagine, you are working in a system with many applications and applications that need to be linked and exchanged: application A needs to send a message to application B via JMS server, application C needs call to application D to obtain the necessary information via the HTTP protocol, etc… All these needs are done in different forms, not in the same data format or in the same standard communication.
Programmers for these applications also face with many difficulties in terms of:
- Protocol: These applications must work with input data from system files to RESTful web service APIs.
- Data format: Applications can use any data format to communicate with each other.
- Exchange data: Applications can call other applications synchronously, asynchronously, messaging, … many different ways of exchanging data.
- The life cycle of an application: Different applications will need to be developed, maintained, and managed in different ways.
- Error handling: This is the core problem of the application, each application has different ways of handling errors.
- Monitoring: Monitoring the integration between applications also has many difficulties for programmers.
Another problem is that applications must connect directly to one another, making it difficult to expand later as the number of connections increases.
To solve this problem, an Enterprise Service Bus system was introduced. We will learn more about it in the next section.
What is Enterprise Service Bus?
The ESB is a one-to-one solution for connecting multiple applications. It defines a place where applications can through this place interact with other applications, called bus. All applications of the system will now only talk to each other through the bus.
Take a look at the following picture to better understand the meaning of ESB:
To do this, our bus system must be able to communicate through various protocols such as HTTP, FTP, and so on, and it must use a common data format standard for all messages such as the Java object, JSON or XML.
The ESB allows us to consolidate all the security, navigation and data transfer issues in one place. Switching from one service to another also works smoothly without having to change anything in the connected applications.
See also: https://en.wikipedia.org/wiki/Enterprise_service_bus
Some frameworks implement ESB
- Mule Enterprise Service Bus
- Apache ServiceMix