Many vendors now have an ESB product and there are many open source
products. But what does Enterprise mean in context of an ESB?
I’ve had many discussions with people recently about ESBs and there appears to be a great difference in interpretation of exactly what an ESB is. Literaly it means Enterprise Services Bus. They are some interesting words.
According to wikipedia, an ESB is described as “In computing, an enterprise service bus (ESB) refers to a software architecture construct, implemented by technologies found in a category of middleware infrastructure products usually based on standards, that provides foundational services for more complex architectures via an event-driven and standards-based messaging engine (the bus).”
This definition inherently infers that it is based on messaging infrastructure. True to that a number of ESB products have emerged from the vendors that previosuly were leaders in this space such as IBM, with WebSphere MQ, Progess with SonicMQ. The Open Source ESBs seem to have had a similiar evolution, such as JBoss ESB, with JBossMQ and Mule with ??? (not sure what its evolultion has been).
Ok, if you want to be seen as a player in the SOA (Service Oriented Architecture) space you must have an ESB component. It is a component that can be used but is not necesarilly essential to succesfully implement a SOA style project.
An ESB is a standards base mechanism to achieve loose coupling between service invocation and service fullfilment. With the additional benefit of transformation and routing of messages and protocols. Putting it simple, a client should be able to call a service, regardless of the protocol, without the need to know how the service is being fullfilled.
It would seem that the term Enterprise infers usage in side the constraints of a single Enterprise. But where do the boundaries of an Enterprise end?
An application written that invokes a service on an ESB, does not concern itself where the service that is actually doing the work resides. So in theory, that service may be being fullfilled from any service that is accessible through the network(s) that the application has access to. The implications of this for SaaS is interesting (discussion for another blog entry) .
With the trend towards buying complete stacks from ESB vendors, such as Oracle SOA Suite, and to some degree with the different capabilities available and needed by projects, most organisations would appear to look to deploy an ESB for the application system currently being implemented.
This would mean that whilst the intentions would be to have one ESB for an organisation, which by the way the name Enterprise also infers (clever product marketting), I believe it will be one ESB per major application system. Every major application system, will have teams with different experience and skill sets.
Thus one could argue then that the name ESB is incorrect. The term System Services Bus may have been better.