ESB – What is an Enterprise Service Bus?
“An enterprise service bus (ESB) is an integrated platform that provides fundamental interaction and communication services for complex software applications via an event-driven and standards-based messaging engine, or bus, built with middleware infrastructure product technologies. The ESB platform is geared toward isolating the link between a service and transport channel and is used to fulfill service-oriented architecture (SOA) requirements” (Techopedia).
“An ESB acts as a shared messaging layer for connecting applications and other services throughout an enterprise computing infrastructure. It supplements its core asynchronous messaging backbone with intelligent transformation and routing to ensure messages are passed reliably” (Loosely Coupled).
“The concept is analogous to the bus concept found in computer hardware architecture combined with the modular and concurrent design of high-performance computer operating systems. The motivation for the development of ESB was to find a standard, structured, and general purpose concept for describing implementation of loosely coupled software components (called services) that are expected to be independently deployed, running, heterogeneous, and disparate within a network.
The primary duties of an ESB are:
- Route messages between services
- Monitor and control routing of message exchange between services
- Resolve contention between communicating service components
- Control deployment and versioning of services
- Marshal use of redundant services
- Provide commodity services like event handling, data transformation and mapping, message and event queuing and sequencing, security or exception handling, protocol conversion and enforcing proper quality of communication service” — Wikipedia
“ESB … provides secure interoperability between enterprise applications via XML, Web services interfaces, and standardized rules-based routing of documents. In practice, this means that data files are passed to and from their destinations based on established guidelines that are common to all parties sharing the information to ensure that the data maintains its integrity as it is routed. The multi-language and multi-platform design of an ESB allows enterprises to process data between applications from various sources. Two common distributed computing architectures used by ESBs are J2EE and .NET” (Webopedia). However, “one can compare two products sporting the moniker ‘ESB’ and find very little in common” (Gartner).