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:
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.
ESB architecture
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:
Salient characteristics
Category
| Functions
|
Invocation
| support for synchronous and asynchronous transport protocols, service mapping (locating and binding)
|
Routing
| addressability, static/deterministic routing, content-based routing, rules-based routing, policy-based routing
|
Mediation
| adapters, protocol transformation, service mapping
|
Messaging
| message-processing, message transformation and message enhancement
|
Process choreography
| implementation of complex business processes
|
Service orchestration
| 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
|
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. )
|
Key benefits
Faster and cheaper accommodation of existing systems.
Increased flexibility; easier to change as requirements change.
Standards-based
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".
Key disadvantages:
Increase overhead, slow down communication speed; especially for those already compatible services.