An Enterprise Service Bus (ESB) is a modular and component based architecture and a key enabler used for implementing the infrastructure for service oriented architecture (SOA). For building a comprehensive service oriented infrastructure (SOI), an ESB is only one of many components used. An ESB allows the interaction between heterogeneous service and interface that might be mismatched or that may change over time.
In an ESB includes three different terms.
- Service: – Service stands for non iterative and automatically executing programs that communicate with other services through message exchange.
- Bus: – Bus is computer hardware used for exchange data between components inside the computer or between computers.
- Enterprise: – It helps to reduce the complexity of enterprise application integration within an enterprise.
In component based architecture assumes that services are generally autonomous and availability of a service at a certain moment of time. So messages required to routed accordingly through the message bus for buffering to permits inspection and enhancement of content as well as correction, rerouting of message flow and filtering.
The responsibilities of ESBs are,
- Monitor and control routing of message transfer between services
- Resolve contention between communicating service components
- Control deployment and versioning of services
- Arrange use of redundant services
- Provide commonly required commodity services like,
- Event handling and event choreography
- Data transformation and mapping
- Message and event queuing and sequencing
- Security or exception handling
- Protocol conversion and enforcing proper quality of communication service
The ESB architecture includes the following process.
1) Managed message processing
In an enterprise service bus architecture an application will communicate through the bus, which acts as the single message exchange between applications. This concept reduces the number of point to point connections between communicating applications and it helps to monitor for failure and misbehavior in highly complex systems and permits easier changing of components. In the concept of ESB every client directs its entire request through the ESB instead of passing it directly to a potential server. This indirection permits the ESB to monitor and log the traffic. The ESB can interfere message exchange and overwrite standard rules for service execution. The possible used interventions are:
- Buffer and delay a message in a staging area and automatically deliver it when the receiver is ready.
- Monitor messages and services to be well-behaving.
- Enforce compliance with dynamic processing and security policies.
- Arrange service execution based on dynamic rules.
- Prioritize, delay, and reschedule message delivery and service execution.
- Write logs and raise exception alerts.
2) ESB commodity services
The ESA services deal with directing and arranging the routing of messages doing common and often required data exchanges. Popular use commodity services are,
- Compressing and encrypting data
- Splitting data into smaller chunks
- Filter unwanted data, extract routing information from the content via a rule engine
Commonly used commodity services are,
- Event handling – It ensure event processing
- Protocol conversion – Translate between communication protocols (e.g. HTTP, FTP, REST, SOAP, JSON, DCOM, CORBA, SAP RFC etc.)
- Mapping – Transfer between tabular data formats
- Translation and transformation – Change data content based on rules
- Queuing and buffering – Handle differing data processing speeds between sender and receiver
3) ESB and message queuing
A mandatory and hence characteristic component of an ESB is a staging or (buffering) component that is typically implemented as a message queue and can be controlled an and used by internal and external services at discretion. The message queue is needs to cope with differing handling speed and temporary failure of services as well as being able to reschedule processing in case of a processing error of a service. Message queues provide an asynchronous communications protocol, meaning that the sender and receiver of the message do not need to interact with the message queue at the same time.
4) ESB as software
The ESB represents the piece of software that lives between the business applications and enables communication among them.
Outstanding ESB characteristics
Invocation: – It support for synchronous and asynchronous transport protocols, service mapping (locating and binding).
Routing: – Routing means addressability, static/deterministic routing, content-based routing, rules-based routing, and policy-based routing.
Mediation: – In metadata and data warehouse, a data transformation convert’s data from a source data format into destination data. Data transformation can be divided into two steps:
- Data mapping maps data elements from the source to the destination and captures any transformation that must occur.
- Code generation that creates the actual transformation program.
The functions of mediation are adapters, protocol transformation and service mapping.
Process choreography: – It is the implementation of complex business processes.
Service orchestration: – It is the coordination of multiple implementation services exposed as a single, aggregate service.
Complex event processing: – The functions are event-interpretation, correlation and pattern-matching.
Other quality services:- It ensure security (encryption and signing), reliable delivery,transaction management
Management: – Services provide the management categories are 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. ).
Agnosticism: – In general agnosticism to operating-systems and programming-languages; for example, it should enable interoperability between Java and .NET applications.
Protocol Conversion: – comprehensive support for topical communication protocols service standards.
Message Exchange Patterns:- It support for various MEPs (Message Exchange Patterns) (for example: synchronous request/response, asynchronous request/response, send-and-forget, publish/subscribe)
Adapters:- Adapters helps for supporting integration with legacy systems, possibly based on standards such as JCA
Security: – It is a standardized security-model to authorize, authenticate and audit use of the ESB.
Transformation:-It is the facilitation of the transformation of data formats and values, including transformation services (often via XSLT or XQuery) between the formats of the sending application and the receiving application
Validation:-Validation against the schemas for sending and receiving messages.
Governance: – It is the ability to apply business rules uniformly.
Enrichment:- It enriching messages from other sources
Split and Merge: – The splitting and combining of multiple messages and the handling of exceptions.
Abstraction: – The provision of a unified abstraction across multiple layers.
Routing and Transformation: – Routing or transforming messages conditionally, based on a non-centralized policy (without the need for a central rules-engine).
Queuing and staging: – Queuing, holding messages if applications temporarily become unavailable or work at different speeds.
Commodity Services: – Provisioning of commonly used functionality as shared services depending on context.