Today, let me see if I can try to point some good difference between EAI & ESB and perhaps SOA as all this is closely tied together while explaining how they are linked to each other too.
SOA (Service Oriented Architecture) is an approach is to have software resources available (& discoverable) on network as independent services and these services should achieve a business objective. (This is simple business language to explain, of course there could be lot of tech def out there)
EAI (Enterprise Application Integration) is a business need to make diverse heterogeneous applications (irrespective of platform and geographical location of these applications) in an enterprise including partner systems to communicate & interact with each other to achieve a business objective in a seamless reliable fashion. There are mainly 2 basic architectures here:
- Hub & Spoke
- Bus architecture
This is where the first doubt comes in mind of people, as they confuse EAI bus architecture with ESB (or may be its me who is thinking this way Bus architecture uses a central messaging backbone (bus) for message propagation. Applications would publish messages to bus using adapters.
ESB (Enterprise Service Bus) is an infrastructure to facilitate SOA and is capable of being used in a more general way than a conventional EAI broker. It gives API which can be used to develop services and makes services interact with each other reliably.
An ESB provides the same base functionality as an EAI broker – connectivity, application adapters, routing of messages based on rules, and data transformation engine – yet, in an ESB, these capabilities are themselves SOA based in that they are spread out across the bus in a highly distributed fashion and hosted in separately deployable service containers. This allows the selective deployment of integration broker functionality exactly where you need it, with no additional over-bloating where it’s not needed. The distributed nature of the ESB container model allows the independent scalability of integration components, which are plugged into your SOA as event-driven services on an as needed basis. Main advantage of ESB is that it costs much less then hub/spoke or bus based product suits and that it is standard based.