An enterprise service bus (ESB) implements a communication system between mutually interacting software applications in a service-oriented architecture (SOA).
It represents a software architecture for distributed computing, and is a special variant of the more general client-server model, wherein any application may behave as server or client.
The motivation for the development of the architecture 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.
ESB is also a common implementation pattern for service-oriented architecture, including the intrinsically adopted network design of the World Wide Web.
[1] Most providers of message-oriented middleware have adopted the enterprise service bus concept as de facto standard for a service-oriented architecture.
[2] However, some software manufacturers relabel existing middleware and communication solutions as ESB without adopting the crucial aspect of a bus concept.
Therefore, the challenges and opportunities for EAI vendors are to provide an integration solution that is low-cost, easily configurable, intuitive, user-friendly, and open to any tools customers choose.