SOA is a set of architectural concepts used for the development and integration of services. A service is a publicized package of functionality offered over the web. ESB is a piece of infrastructure software that provides a software architecture construct for providing basic services for complex architectures. ESB can be used as a platform on which SOA is realized.
What is SOA?
SOA (Service-oriented architecture) is a set of architectural concepts used for the development and integration of services. SOA deals with distributed computing in which consumers consume a set of interoperable services. Multiple consumers can consume a single service and vice versa. Therefore, SOA is often used to integrate multiple applications that use different platforms. For SOA to properly operate, services should be loosely coupled with operating systems and the technologies of underlying applications. SOA developers create services using units of functionality, and make them available over the internet. Web services can be used to implement SOA architecture. In that case, web services become the units of functionality of SOA accessible over the internet. Web services can be used by anybody without being concerned about the platforms or the programming languages used for developing them. SOA is directly built upon the principle of service-orientation, which talks about services with simple interface that can be accessed independently by users, without worrying about the actual platform implementation of the service.
What is ESB?
ESB (Enterprise Service Bus) is a piece of infrastructure software that provides a software architecture construct for providing basic services for complex architectures. But there is considerable argument over whether to call ESB an architectural style or a software product or even a group of products. It provides the services through event driven and standards based engine for messaging (which is actually the service bus). On top of this messaging engine, a layer of abstraction is provided to allow architects to exploit the facilities offered by the bus, without writing any actual code. ESB is usually implemented through standards based middleware infrastructures.
The use of the term “bus” in ESB is due to the fact that ESB does provide a very similar function to the physical computer bus, but at a much higher level of abstraction. One of the main advantages of having an ESB is the ability to reduce the number of point-of-contacts; thus, making the adaptation to the changes much easier. ESB can be used as a platform on which SOA is realized. The concepts of transformation/ routing (flow related) can be brought to SOA by ESB. Furthermore, by proving the abstraction for endpoints (in SOA), ESB promotes loose coupling between services.
What is the difference between SOA and ESB?
There are some key differences between SOA and ESB. SOA is an architectural model for implementing loosely coupled service based applications. ESB is a piece of infrastructure software that helps developers to develop services, and communicate between services through suitable APIs. ESB can be used as a platform on which SOA is realized. ESB is only the medium through which the services flow. ESB provides facilities for the composition and deployment of services, which in turn implement the SOA.