Introduction:In software engineering, a Service-Oriented Architecture (SOA) is a set of principles and methodologies for designing and developing software in the form of interoperable services. These services are well-defined business functionalities that are built as software components (discrete pieces of code and/or data structures) that can be reused for different purposes. SOA design principles are used during the phases of systems development and integration.
One of the main platforms that was introduced is the Enterprise Service Bus referred to as ESB.
ESB is considered a platform to realize a service-oriented architecture.
An ESB brings flow-related concepts such as transformation and routing to a Service-Oriented Architecture. An ESB can also provide an abstraction for endpoints. This promotes flexibility in the transport layer and enables loose coupling and easy connection between services.
Use of the word “bus” stems from the physical bus that carries bits between devices in a computer. The ESB serves an analogous function at a higher level of abstraction. In an enterprise architecture making use of an ESB, an application will communicate via the bus, which acts as a message broker between applications. Such an approach has the primary advantage of reducing the number of point-to-point connections required to allow applications to communicate. This, in turn, makes impact analysis for major software changes simpler and more straightforward. By reducing the number of points-of-contact to a particular application, the process of adapting a system to changes in one of its components becomes easier.
ESB as software
In such a complex architecture, the ESB represents the piece of software that lives between the business applications and enables communication among them. Ideally, the ESB should be able to replace all direct contact with the applications on the bus, so that all communication takes place via the ESB. To achieve this objective, the ESB must encapsulate the functionality offered by its component applications in a meaningful way. This typically occurs through the use of an enterprise message model. The message model defines a standard set of messages that the ESB will both transmit and receive. When the ESB receives a message, it routes the message to the appropriate application. Often, because that application evolved without the same message-model, the ESB will have to transform the message into a format that the application can interpret. A software “adapter” fulfills the task of effecting these transformations (analogously to a physical adapter).
ESB High level Architecture:
support for synchronous and asynchronous transport protocols, service mapping (locating and binding)
addressability, static/deterministic routing, content-based routing, rules-based routing, policy-based routing
adapters, protocol transformation, service mapping
message-processing, message transformation and message enhancement
implementation of complex business processes
coordination of multiple implementation services exposed as a single, aggregate service
Complex event processing
event-interpretation, correlation, pattern-matching
Other quality of service
security (encryption and signing), reliable delivery, transaction management
monitoring, audit, logging, metering, admin console, BAM (BAM is not a management capability in other words the ESB doesn’t react to a specific threshold. It is a business service capability surfaced to end users. )
Faster and cheaper accommodation of existing systems.
Increased flexibility; easier to change as requirements change.
Scales from point-solutions to enterprise-wide deployment (distributed bus).
Predefined ready-for-use service types.
More configuration rather than integration coding.
No central rules-engine, no central broker.
Incremental patching with zero down-time; enterprise becomes "refactorable".
Increase overhead, slow down communication speed; especially for those already compatible services.