An enterprise service bus (ESB) is a middleware tool used to distribute work among connected components of an application. ESBs are designed to provide a uniform means of moving work, offering applications the ability to connect to the bus and subscribe to messages based on simple structural and business policy rules.
As such, it's a tool that has use in both distributed computing and component integration. The best way to think of this tool is to visualize it as a set of switches that can direct a message along a specific route between application components based on message contents and implementation or business policies.
Enterprise service bus vs. microservices
The ESB has often been talked about as a way to effectively implement and manage SOAP-based architectures, like traditional service-oriented architecture (SOA), but ESBs represent a much different workflow strategy than may be found in the more decoupled approach associated with microservices.
Unlike microservices -- or similar strategies that mediate the application programming interface connections between components, but don't establish workflows -- an ESB is the center of application workflow. It is, in effect, a message queue that handles information exchanges throughout the application.
An ESB does not dictate whether components that use the bus are local to it or remote, nor does it enforce any specific requirements for programming languages. Instead, it acts to unify the various ways in which components can receive or send information to other application elements.
Benefits of an enterprise service bus
Because an ESB architecture controls the way that work moves, it makes it easy to change components or add additional components to an application. Because an ESB sees everything, it also makes for a convenient place to enforce security and compliance requirements, log normal or exception conditions and even handle transaction performance monitoring.
An ESB also provides load balancing in which multiple copies of a component can be instantiated to improve performance. It can also often provide failover support should a component or its resources fail.
Problems with an enterprise service bus
The challenge in the ESB concept is there is no single accepted standard for features or behavior. Although it can be argued that an ESB's primary function is to act as a message bus that steers messages between applications or components according to a policy language, over time, the term has been used to describe everything that supports workflow in some way.
Oracle, for example, places nearly a dozen middleware tools in the ESB category, but those tools may feature any number of the ESB functions listed above.
However, steering messages according to policy language is often widely accepted as a function that separates ESBs from other middleware tools. Still, products are generally promoted by linking them to concepts and features buyers are aware of, so it's critical for prospective users to clearly define what their business needs are, and then validate the features of their ESB candidates against those needs.
Enterprises can manage applications using Talend ESB and its open source version, Open Studio for ESB.