Understanding the basics
An Enterprise Service Bus (ESB) is an architectural model that defines the patterns to integrate IT systems by interconnecting an ecosystem of loosely coupled and interoperable business services and components in an elastic way. The ultimate goal is to provide a flexible implementation of the enterprise business processes in such a flexible way that those processes can be efficiently adapted to the ever-changing circumstances of the enterprise.
In the following figure, we can see different example business processes that could be run within our ESB, as a set of decoupled business services or stages:
The VETRO pattern
In most cases, a business process is all about how information travels through the process and how it is handled along the way, and thus the ESB model predicates the integration of such business processes in terms of the five basic steps that conform to the VETRO pattern:
Validate: This is usually the very first step of the information processing, where we ensure that the information received is in the format expected, although there can be other validation steps along the process. This validation against the mutually agreed service/data contracts ensures that the information flowing through the ESB is legitimate and compliant with the expectations of any system connected to the bus.
Enrich: During this step, the information is enriched so it contains all the data required to continue its journey and provide a meaningful input to the target system.
Transform: The information is transformed to the format the target system expects and understands. This step could happen as the information arrives at the ESB (where in this case the target system is the ESB itself) where the information would be transformed into a canonical format (quite often defined by the company's Enterprise Data Model), as well as when the information leaves the ESB, transforming it from the canonical format to the format expected by the target system.
Route: In systems integration, the information intrinsically has to travel from one place to the other, and that is what happens during this stage. The next step the information needs to take is identified and the route is applied so the process can continue as expected.
Operate: The business processes are all about triggering actions within the enterprise that achieve the mission the process is designed for. In this stage, the target system is delivered the input information so any required actions are taken and any expected outcomes are produced. In essence, the Operate step is the invocation of a target service or even an interaction with the target service.
The ESB receives messages from the systems connected to it and performs one or more of the steps mentioned previously. All those steps that define how a message needs to be handled by the ESB are defined as itineraries, that are a set of decoupled processing steps that doesn't necessarily know about the whole process the message just went through or is going to go through afterwards, but they just know what they have to do with the message they just received for processing.
This doesn't sound like rocket science or anything very new, but what the ESB adds to the pattern is the means to make all these stages along the process as decoupled and configurable as possible, so once a process is in place any further changes can be made with the smaller effort and the smallest impact possible on existing systems.
ESB capabilities
An ESB has different features and capabilities that support one or many of the elements of the VETRO pattern.
The main capabilities that support this model in the ESB are listed in the following table:
Capability |
Mapping to VETRO |
Description |
---|---|---|
Message Routing |
---RO |
Dynamic and configurable message routing allows flexible processes to be changed even at runtime |
Connectivity |
---RO |
Adapters and other protocol transformation components facilitate the connections between heterogeneous systems |
Exchange Patterns |
---RO |
Business processes usually require different message exchange patterns, such as synchronous/asynchronous, pub-sub, and so on |
Transformation |
--T-O |
Systems that understand different data formats and structures require a man in the middle to help them talk to each other |
Service Directory |
--TRO |
Loosely coupled service architectures require a centralized directory where consumers can find the service they need to use |
Rules Dynamic Resolution |
VETRO |
The configurable and elastic behavior ESB predicates require a rule system that provides flexibility to the other capabilities of the system |
Validation |
V-T-- |
Information needs to be validated to ensure it complies with the definition of the business processes |
Aggregation |
-ET-O |
The business processes are usually composed of multiple subprocesses that will be invoked to enrich and transform the information as the overall process runs |
Service Orchestration |
---RO | |
Assured Delivery |
---RO |
Some features such as message queuing or assured delivery are required to ensure reliable and predictable execution of business processes |
Management and Governance |
----- |
We need to be able to configure and monitor the behavior of the processes so we are always on top of what is happening in our business |
Security |
----- |
The execution of our business processes needs to rely on a security system that ensures that all the parties involved are who they claim to be and are allowed to take the actions they want to perform |
If you have been working with BizTalk Server for some time or have some basic knowledge about its architecture and features, you will find that most of those cover these capabilities any ESB system is required to have, but you will also appreciate that some of them could be implemented in different ways, requiring some extra effort from your architecture team to decide the best way of doing so.
Here is where the ESB Toolkit comes to help. Based on the years of experience of architects and IT teams building integrations solutions with BizTalk, these patterns and capabilities have been packaged as a set of guidelines and re-usable components that will help you to build an ESB solution with a more predictable and efficient result.