WordPress Websites for Engineers: Elevate Your Brand
EAI - Enterprise Service Bus - ESB - Use Case
1. Sherif Rasmy - ESB
Enterprise Application Integration
The Enterprise Service Bus – ESB
Sherif Rasmy - March 12, 2014
Introduction
SPX is a medium size on-line store that has successfully sustained consistent growth over the past two
years. In order to maintain that growth, management realized that their operational systems need to
be modernized to expedite purchases' delivery as well as improving the quality of customer service
through an implementation of a Customer Relationship Management System (CRM).
This paper will discuss the current architecture of SPX's systems and how it can be modernized to
achieve SPX’s goals with minimal changes. The paper explores using an enterprise service bus (ESB)
to integrate existing systems and bring processes to be near real time. We also compare two ESB
offering from IBM and Apache.
The Problem
File based integration between the order, payment, warehouse and shipping management
systems (figure 1).
It takes at least 2 days for any purchase to be ready for shipping.
Available system interfaces (REST/SOAP/Queues) are not utilized.
The life cycle is externally controlled through multiple and non-integrated batch processes
Order Management
System
(OMS)
DB
Payment Management
System
(PMS)
DB SOAP
Warehouse management
System
(WMS)
DB REST
Shipping Management
System
(SMS)
DB MQ
1: Place Order
2: Load Orders
Overnight 1
3: Load Orders
Overnight 2
4: Load Orders
Overnight 2
Figure 1 – SPX Current Architecture
The Solution
An ESB will be deployed as a mediator/hub between existing systems providing centralized
connectivity between all systems (figure 2).
2. Sherif Rasmy - ESB
Web Service enabled routes will provide near real-time orchestration of activities within
processes like placing an order.
In our example, placing an order will:
o Create an order in OMS
o Asynchronously call PMS payment SOAP service
o Wait for payment success and simultaneously call WMS and place shipment request in
SMS
The sale process from start to initiating shipping is now reduced minutes
The implementation of such ESB will enable a smooth integration with a COTS CRM solution.
Most ESBs have pre-configured connectors to popular CRM like Salesforce, Sugar CRM and
Oracle CRM.
Order
Management
System
(OMS)
DB
Payment Management
System
(PMS)
DB SOAP
Warehouse management
System
(WMS)
DB REST
Shipping Management
System
(SMS)
DB MQ
Place
Order
Route
1: Place Order
2: Place Order
Workflow
E
S
B
Save Order
4: Payment
Request
5: Poll Payment
Request
6: Call
Recipients
Figure 2 – SPX New Architecture
The Enterprise Service Bus
There is no standard definition for the term “Enterprise Service Bus”. A collection of software
components that provide an infrastructure to integrate applications is very abstract definition
but very accurate as well [2]
. This leads to confusion between an Integration Framework, an
ESB and an Integration Suite
The number and sophistication of functional and non-functional features determine if the
integration solution is an Integration Framework, an ESB or an Integration Suite (figure 3).
In the upcoming sections, key features of integration frameworks and ESBs will be described.
These features will be the basis of comparison between Apache ServiceMix and IBM
WebSphere ESB.
Integration suites are out of scope of this paper but are briefly touched upon in figure 3 for
completeness purposes.
3. Sherif Rasmy - ESB
Integration Suite
ESB
Integration Framework
Messaging Connectivity Routing Transformation
Business Process
Management
Business Rules Engine
Business Activity
Monitoring
Web Services Framework
Message BrokerSystem Management
Development & Tooling
Integration Suite DB
Figure 3 – Enterprise Application Integration Stack
Integration Frameworks
Integration frameworks implement Enterprise Integration Patterns [3]
through 4 categories of
components; Messaging, Connectivity, Routing and Transformation (figure 4)
Trasnsformation
Messaging
Channels
- Point to Point
- Publish Subtribe
- Dead Letter
Message Construction
- Event Message
- Request Reply
- Correlation
Management
- Control Bus
- Detour
- Wire Tap
ConnectivityEndpoints
- Message Mapper
- Event Driven Consumer
- Polling Consumer
- Competing Consumers
- Durable Subscriber
- Idempotent Consumer
- Transactional Client
- Messaging Gateway
Connectors
- JDBC
- JMS
- JCA
- HTTP/HTTPS
- FTP/IO
- SMTP
- SOAP
- REST
Routing
- Content Based
- Splitter
- Load Balancer
- Message Filter
- Aggregator
- Delayer
- Dynamic Router
- Re-Sequencer
- Routing Slip
- Recipient List
- Throttler
- Sampling
- Content Enricher
- Sorter
- Content Filter
- Validator
- Claim Check
- Normalizer
Figure 4 – Integration Frameworks Components
Integration frameworks provide some level of monitoring, tooling, and system management.
However these are not as sophisticated as those provided in ESBs.
ESBs
An ESB is based on an integration framework. However, it is a much more powerful because it
offers strong tool support for deployment, administration and monitoring at runtime, besides
basic functionalities for application integration [1]
(figure 3).
Graphical editors are provided for the implementation of various integration scenarios. The
integration logic can be modelled with "drag and drop" and the corresponding source code can
also be generated automatically [1]
.
The great advantage of ESBs over the use of pure integration framework is therefore the
better tooling, which reduces the cost and complexity significantly.
4. Sherif Rasmy - ESB
System Management
- Life Cycle Management
- Resource Management
- Dynamic Deployment
- Clustering and failover
- Security
- Remote access
- Centralized logging
- Dynamic configuration
Message Broker
- Cross-language clients
- Flexible persistence
- Streams for large messages
- Message compression
- Cluster configuration manager
- Configuration profiles
- Runtime registry
- Monitoring
Development & Tooling
- Graphical Editors
- Source Code Generators
- API Dev. Kits
Web Services Framework
- Turn Routes and Flows services
- WS-*
- SOAP/REST
Integration Framework
Figure 5 – ESB Components
ServiceMix vs. WebSphere ESB
Integration Framework
Apache SeviceMix IBM WebSphere ESB
Powered by Apache Camel [4]
Camel is a versatile open-source integration framework
based on known Enterprise Integration Patterns.
Camel defines routing and mediation rules in a variety of
domain-specific languages, including a Java-based Fluent
API, Spring or Blueprint XML Configuration files, and Scala
DSL
Camel comes with a rich set of connectors including: JMS,
JDBC, JPA, SOAP, REST, IP, FTP, HTTP/HTTPS, JCA, SMTP,
Facebook, Salesforce, SAP, Twitter
Powered by IBM Integration Bus [10]
and IBM WebSphere
Adapters [11]
The IBM Integration Bus, formerly known as the IBM
WebSphere Message Broker Family, provides a variety of
options for implementing a universal integration foundation
based on an enterprise service bus (ESB). Implementations
help to enable connectivity and transformation. Includes
connectivity to JMS, JDBC, JPA, SOAP, REST, IP, FTP,
HTTP/HTTPS, JCA, SMTP
WebSphere Adapters include special connectors (Adapters)
including: Facebook, Salesforce, SAP, Twitter
System Management
Apache SeviceMix IBM WebSphere ESB
Powered by Apache Karaf [5]
Apache Karaf is a small OSGi based runtime which provides
a lightweight container onto which various components and
applications can be deployed. It provide the following
features:
- Hot Deployment - Remote Access
- Dynamic Configuration - Instances Management
- Provisioning
Powered by Tivoli Composite Application Manager [12]
Tivoli Composite Application is integrated software for SOA
management for services, applications and middleware. It
combines in-depth services management with the
management of IBM WebSphere Application Server, IBM
WebSphere MQ and IBM Message Server environments, and
monitoring of virtual servers and operating systems.
5. Sherif Rasmy - ESB
Message Broker
Apache SeviceMix IBM WebSphere ESB
Powered by Apache ActiveMQ [6]
ActiveMQ is an open source MOM compliant with the JMS
standard. It supports many cross language clients and
protocols including Java, C, C++, C#, Ruby, Perl, Python
and PHP.
Power by IBM WebSphere MQ [13]
WebSphere MQ can transport any type of data as messages.
It works with a broad range of computing platforms,
applications, web-services and communications protocols for
security-rich message delivery.
Web Services Framework
Apache SeviceMix IBM WebSphere ESB
Powered by Apache CXF [7]
Apache CXF framework is used to build and develop services
using front-end programming APIs, like JAX-WS and JAX-
RS. These services can speak a variety of protocols such as
SOAP, XML/HTTP, RESTful HTTP, or CORBA and work over a
variety of transports such as HTTP, JMS or JBI.
Powered by WebSphere Application Server [15]
IBM WebSphere Application Server Feature Pack for Web
Services extends the capabilities of IBM WebSphere
Application Server. It helps you send web services messages
asynchronously, reliably and securely. It simplifies web
service implementation and management, and enables
greater interoperability with other platform providers.
Development & Tooling
Apache SeviceMix IBM WebSphere ESB
Powered by Fuse IDE [8]
Fuse IDE is a graphical, Eclipse-based tool for integrating
software components that works with Apache ServiceMix,
Apache ActiveMQ, and Apache Camel.
Powered by IBM WebSphere Business Modeler and
Integration Developer [14]
WebSphere Business Modeler lets business analysts design
and optimize the desired business process models through
simulation. It speeds up the development process by jump-
starting the construction of the implementation-level model,
and drives the development of components or services
necessary to complete the implementation.
WebSphere Developer provides visual software development
tools to specify, test and deploy executable business
processes that integrate Web services, enterprise
applications, human tasks and other service components into
a SOA-based business solution. It is an Eclipse-based IDE for
integration specialists to build composite applications
Conclusion
Based on the comparison outlined one finds the following:
The cost saving you achieve with ServiceMix is considerably large. ServiceMix is open source
and free of charge; WebSphere ESB license exceeds $350K/year [16]
(16 core processor). On
the hand, in case professional support is needed a commercial version of ServiceMix (JBoss
Fuse) costs $120K.
The core functionality SPX is looking for is an integration framework. Although Apache Camel
is relatively new compared to IBM Integration Bus, its routing technology is standardized
through DSL and implements all EIP patterns from the ground up. This is not the case with
IBM Integration Bus which relies on proprietary technology. Relying in standardized
6. Sherif Rasmy - ESB
technology reduces locking into a specific technology.
An ESB implementation is not an easy task regardless of the provider you choose [17]
. The
fact that ServiceMix is an open-source provides you with many blogs, tutorials and a very
active community. To start an ESB project the technology staff needs to be trained by
professionals and it should be clear that the learning curve is steep.
It should be noted that while preparing this comparison, it was not easy to fit IBM’s products into the
functional component architecture adopted to conduct the comparison. As a matter of fact, the
collection of IBM products that form WebSphere ESB overlap in functionality.
References
1. Kai Wähner. Apr 02, 2013. Choosing the Right ESB for Your Integration Needs. http://www.infoq.com/articles/ESB-
Integration
2. Matthias Feraga. June 6, 2011. Choosing between lightweight and traditional ESBs. http://blog.octo.com/en/choosing-
between-lightweight-and-traditional-esbs/
3. Gregor Hohpe and Booby Wolf. Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions.
http://www.eaipatterns.com/eaipatterns.html
4. Apache Camel. https://camel.apache.org/what-is-camel.html
5. Apache Karaf. http://karaf.apache.org/
6. Apache ActiveMQ. http://activemq.apache.org/
7. Apache CXF. http://cxf.apache.org/
8. Fuse IDE. http://fusesource.com/products/fuse-ide/
9. IBM ESB. Chapter 3. http://www.redbooks.ibm.com/redbooks/pdfs/sg247369.pdf
10. IBM Integration Bus. http://www-03.ibm.com/software/products/en/ibm-integration-bus
11. IBM WebSphere Adapters. http://www-03.ibm.com/software/products/en/adapters
12. IBM Tivoli Composite Application Manager. http://www-
03.ibm.com/software/products/en/compositeapplicationmanagerforsoaplatform/
13. IBM WebSphere MQ. http://www-03.ibm.com/software/products/en/wmq/
14. IBM WebSphere Business Modeler and Integration Developer.
https://www.ibm.com/developerworks/websphere/zones/devtools/newto/#soa
15. IBM WebSphere Application Server. http://www-03.ibm.com/software/products/en/webservices
16. Red hat Jboss Fuse. https://img.en25.com/Web/RedHat/fuse-v-ibm-wesb.pdf
17. Don’t use an ESB unless you absolutely, positively need one. http://www.zdnet.com/blog/gardner/dont-use-an-esb-
unless-you-absolutely-positively-need-one-mule-cto-warns/3060