Saturday, February 25, 2012

ESB Vs BPEL

ESB is good for routing messages to multiple destinations. It is also good for doing transformations that have little to no business rules. The footprint is much smaller and incurs minimal overhead therefore the performance is much better.
BPEL is used for bringing together multiple services. There is much more functionality and allows implementation of complex business logic.


Oracle BPEL can be used for integration code but its not designed/optimised for it.. Oracle BPEL is a Business Process Execution Language and as such its optimised for managing and coding business processes, whereas an ESB is quite simply a highly efficient intergration product. Its principle objective is to join two different services together quickly, efficiently and bi-directional.

Specifically an ESB moves data via
Connects services via different adaptors (WebServices, FTP,File,JDBC etc) and protocols (HTTP,JMS)


Enriches and transform data using XSL & domain value mapping lookups

Routes messages based on data in the message payload and/or header

and finally and often overlooked feature is that an ESB
Virtualises services, quite simply adds a facade layer to your infrastructure...
Its also worth noting that doing integration work with Oracle ESB is not only quicker to "build" but its also quicker in its execution. I've been told by some collegues in the US that an integration process in ESB product is approx twice the speed of same process in Oracle BPEL..

So to recap

Use ESB when

You want a really low cost solution

Only need connectivity, simple transformations and routing

Use BPEL+ESB when

You need to code complex business logic
Integration with Workflow
Complex transforms potentially involving the database

Have Long running processes which may or may not be stateful.



The best practices around using BPEL and ESB together are as follows:
- BPEL takes care of the stateful, long running, orchestration steps
- BPEL operates on the canonical definitions of your business objects - such that
your BPEL process is clean (minimal transformations, assigns) with the focus on
the basic business logic and related compensatory error-handling logic

whereas,
- ESB virtualizes endpoints that BPEL is orchestrating
- ESB does the heavy lifting of transformations to and from the canonical definition to
endpoint definitions of the business objects

With an appropriately layered SOA architecture, one would look at ESB as a
repository of services that BPEL orchestrates. At deployment time, this layered
approach provides you the flexibility to dedicate servers to individual
tiers (BPEL and ESB) and thereby maximize the resource usage for your
particular use case.


BPEL data transformations enrich and perform complex changes whereas ESB can perform only simple transformations.
• Exception handling can be done in BPEL.
• ESB does not have the Sensors which can be used to monitor the activities that can send actions to Business Activity Monitoring (BAM) or database/jms.
• BPEL can use Business rules, Human Workflow and Notifications.
• Primarily BPEL is used for Orchestration, data enrichment and also for Human interaction whereas ESB is used for Store and forward transport of data.

No comments:

Post a Comment