Oracle OpenWorld: The Big BPEL-ESB-OSB cook-off
Full disclosure: I am attending Oracle OpenWorld courtesy of Oracle.
The speaker in this session is Andreas Chatziantoniou from Accenture. He’s discussing the overlap between Oracle’s BPEL, ESB (legacy Oracle), and OSB (BEA ESB) products.
First up is BPEL. His slide states that BPEL should be used for system to system or service orchestration, when human workflow is needed, and when there are parallel request-response patterns. The next slide says that BPEL should not be used for complex data transformations, it should not be used to program, and should not be used as a business modeling tool. At first glance, this may seem strange, but I think it’s more of an indication that BPEL is something that gets generated by your tool, it’s not something people should be editing directly. This point could be made more clearly. He is emphasizing that you should not use BPELJ (embedded Java in BPEL).
He’s now talking about “dehydration,” a term I had not heard before. He’s using that to refer to the writing of a process state to disk so it can be restored at a later time. He stated that this is a natural part of BPEL, but not part of ESB/OSB. I can live with that. A service bus shouldn’t be doing dehydration any more than a network switch should be.
Now on to ESB/OSB. His slide says they should be used for loose coupling, location transparency, mediation, error handling, transformation, load balancing, security, and monitoring. Good list, although it does have the two grey areas of mediation and transformation. You need to further define what types of mediation and transformation should and should not be done. The way I’ve phrased it is that ESB’s should be about standards-in and standards-out. As long as you’re mediating and transforming between standards (and the same standards on both sides), it’s a good fit. If you are transforming between external and internal standards, as is the case in an external gateway, consider whether your ESB is the right fit for this since these mappings can get quite complicated. Those are my words, not the speakers, sorry this is something I’ve thought a lot about.
He’s now talking about mediation, and specifically referring to a component that existed in Oracle’s legacy ESB. He said it connects components in a composite application. To me, this does not belong in a service bus, and in the case of Oracle Service Bus, it does not. He did not go into more detail on the type of mediation (e.g. security token mediation, message schema mediation, transport mediation). As previously said, this needs to be made more narrow to make an appropriate decision on whether your mediation is really new business logic that belongs on a development platform, or mediation between supported standards than can be done by your connectivity infrastructure.
On transformation, Andreas focused more on what the platforms can do, rather on what they should do, calling out that XML transformations via XQuery, XSLT, et. can be equally done on any of the platforms. His advice was do it in the service bus, and avoid mixed scenarios. I’m really surprised at that, given how CPU-intensive transformations and mappings can be. His point was that in a very large (50-60 steps) BPEL process, handling transformations could get ugly. I see the logic on this, but I think if you do the analysis on where those transformations are needed, it may only be in one activity and best handled by the platform for that activity itself.
Overall, the speaker spent to much time discussing what the products can do, calling out overlaps, and not enough time on what they should do. There was some good advice for customers, but I think it could have been made much simpler. My take on this whole debate has always been straightforward. A BPEL engine is a service development platform. You use it to build new services that are most likely some composite of existing services. I like to think of it as an orchestrated service platform. As I previously said, though, you don’t write BPEL. You use the graphical modeler for your tool, and behind the scenes, it may (or may not) be creating BPEL.
A service bus is a service intermediary. You don’t use it to build services, you use it to connect service consumers and service providers. Unfortunately, in trying to market the service bus, most vendors succumbed to feature creep, whether due to creating their ESB from a legacy EAI product, or by adding more development like features to get more sales. Think of it as a very intelligent router, meant to be configured by Operations, not coded by developers.