What is Enterprise Service Bus (ESB)?
An enterprise service bus (ESB) is a software platform used to distribute work among connected components of an application. It is designed to provide a uniform means of moving work, offering applications the ability to connect to the ESB 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 of 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. However, 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 API connections between components -- 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 controls the way work moves, it makes it easy to change components or add additional components to an application. It also makes for a convenient place to enforce security and compliance requirements, log normal or exception conditions and even handle transaction performance monitoring.
Finally, an ESB also provides load balancing, in which multiple copies of a component can be instantiated to improve performance, as well as failover support should a component or resource fail.
Challenges of an enterprise service bus
A common challenge associated with the ESB concept is the lack of a single accepted standard for features or behavior.
Although an ESB's primary function is to act as a message bus that steers messages between applications or components according to a policy language, the term is sometimes used to describe everything that supports workflow in some way. For example, the application technology provider Oracle historically placed several types of middleware tools in the ESB category, but those tools may feature any number of application management functions.
Steering messages according to policy language is the function that separates ESBs from other middleware tools. 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.