Some thoughts on ESB vs. REST + Dynamic Languages

I spent some time this weekend thinking on Steve Vinoski comments regarding the REST+Dynamic Languages vs. ESB debate. As much as I've admired Steve over the last years I cannot agree with him on this one. I bought into the REST philosophy a long time ago and I am a big fan of dynamic languages but I think that presenting both as an alternative to ESBs on EAI-BPM scenarios is oversimplifying one of the most interesting challenges on the industry nowadays. In my opinion all this come down to applying the right technology to a specific scenario. I spend a lot of time working with customers on SOA/BPM scenarios and I've seen some very creative solutions both using ESBs as well as using REST and Dynamic languages. One of the main challenges with the ESB adoption, especially for J2EE-J2SE customers, is the high number of vendors (23 last time I counted) that provide very similar solutions in terms of features. I also think that with the increasing adoption of Service Component Architecture (SCA) we are about to see a similar phenomena for service composition and deployment technologies. In .NET environments the best option are a combination of BizTalk Server and the ESB Guidance Toolkit or the very creative Neuron ESB from my friends of Neudesic.

From my perspective, I always try to apply REST to model resource-oriented and/or state-machine services. My friend Tim Ewald wrote a phenomenal reflection on this topic. Dynamic languages on the other hand, are a great fit for creating live-models that represent interactions between services. Combining these two technologies together we can certainly provide some very effective solutions for some integration scenarios for which the use of an ESB would introduce unnecessary complexities. Given said that, there are A LOT of scenarios on which applying an ESB either as a product or as an architecture style is the right solution and REST and Dynamic languages are just NOT ENOUGH. Addressing those scenarios using only REST and Dynamic Languages most likely would introduce the typical problems that occur when we try to solve intrinsically complex problems with simple and limited technologies.

As always, an example might helpJ. I've listed some of the capabilities that I think traditional ESBs technologies offer and that are very difficult to equate using REST and/or Dynamic Languages. 

  • Long running processes: Some Business Processes in the enterprise are naturally long-running. Modeling those processes often entails the use of persistent-stores, message correlation mechanisms and other capabilities that are traditionally part of ESB products. Building these functionalities with REST and Dynamic Languages requires lots of custom coding.
  • Scalability: When comes to BPM, the notion of scalability entails more than what you can achieve with infrastructure technologies such as Web Servers or Database servers. Some ESBs (at least the decent ones) provide some complex algorithms for controlling the important aspect such as resource throttling, message throughput, messaging routing among other key components of a scalable solution.
  • WS-* protocols: Some WS-* protocols have matured enough and present a wide adoption in the industry. Arguably, the top list is composed by WS-Security, WS-ReliableMessaging, WS-Policy, MTOM and WS-MetadataExchange with honorable mentions to WS-Trust and WS-SecureConversation. A lot of the existing ESBs are built on Web Services frameworks that provide implementations of the most common WS-* protocols. On the other hand, the support for those protocols in Dynamic Languages is almost non-existent with the exception of my friends of WSO2 who have been doing some fantastic things implementing WAS for PHP, Python and Ruby.
  • Description: As much as I love REST we have to admit that one of the main challenges to its adoption is the fact that there is no widely adopted service description language that presents and alternative to WSDL. WADL seems to be a decent solution but its adoption in the enterprise has been very limited and still remains to be seen how REST-based technologies can overcome some of the challenges that SOAP-based technologies faced with the use of WSDL. It's undeniable that having mechanisms to express service contracts and policies becomes essential in some ESBs scenarios.
  • Adapters: Although you can always argue that you can use REST interfaces to communicate with Line of Business (LOB) systems; the fact of the matter is that the interaction with LOB systems requires lots of infrastructure logic on the client side for handling things like configuration, retransmissions and failures, connection management, etc. The majority of the ESBs in the market use or implement adapter frameworks that handle all those important features.
  • Modeling: The use of models is one of the keys to the success of a SOA implementation. Traditionally, ESBs rely on declarative languages such as WSBPEL, XLANG or WSCL to model the different interactions or compositions between services. Using Dynamic languages to express models is a very attractive idea but it requires the ability to model Integration Domain Specific capabilities which are not represented by default in languages such as Ruby or Python.
  • Monitoring: Monitoring integration solutions entails much more than just monitoring the message flow between endpoints. Some of the existing ESBs on the market provide rich monitoring technologies that help to address this challenge. In the case of a solution based on REST and Dynamic languages, this capability is often limited to the use of monitoring software on the services endpoints.

 

Published Tuesday, October 09, 2007 8:36 AM by gsusx

Comments

# Some thoughts on ESB vs. REST + Dynamic Languages - Jesus Rodriguez's WebLog

Pingback from  Some thoughts on ESB vs. REST + Dynamic Languages - Jesus Rodriguez's WebLog

Tuesday, October 09, 2007 11:55 AM by Pawel Pabich

# re: Some thoughts on ESB vs. REST + Dynamic Languages

Well put though I would not agree that WSO2 has anything really useful regarding their WS-* implementation. They seem to implement WS-Security 1.0 and that's it which is not enough. You mentioned the Neuron ESB as well. Have you used it? Would you recommend it? Any idea what the pricing is, I can not find it on their web site.

# Powernewt.Com » Some thoughts on ESB vs. REST + Dynamic Languages

Pingback from  Powernewt.Com » Some thoughts on ESB vs. REST + Dynamic Languages

Wednesday, October 10, 2007 11:56 AM by Steve Vinoski

# re: Some thoughts on ESB vs. REST + Dynamic Languages

Long-running processes: Why does building long-running processes with REST and dynamic languages require lots of custom coding? Many websites are built with REST and dynamic languages, and they sure don't require lots of custom code; if anything, they require far less code overall than the alternatives. Please provide some tangible proof for your assertion here.

Scalability: surely you jest. Are you trying to say that ESBs scale better than the world wide web, which is REST-based? Can you name one large-scale site that's based on an ESB?

WS-* protocols: define "wide adoption." Remember, that's the world I come from, so I'm fairly confident in stating that the overall market for that stuff, in the big picture, is pretty small. It's part of the reason I left it behind.

Description: some like WADL, some don't. I think description languages are useful only for the coding-generation gimme-my-IDL mindset. Even with IDL, WSDL, or WADL, you pretty much always need to also talk to somebody or read a text document to figure out exactly how to interact with the service, so why not just bypass the machine-readable description entirely?

Adapters: this is precisely the use case I gave in my blog for when I'd actually use an ESB.

Modeling: umm, yeah, right. Modeling has never done anything for me; I've built a number of very successful systems without it. Saying that it's necessary is quite mistaken, IMO.

Monitoring: again, surely you jest. Are you trying to say that the ability for a website provider to monitor that site and its back-end implementation is limited, and that ESBs are much farther along in this space? Please explain.

As I've said elsewhere, the problem with many ESB proponents is they can only speculate about the effectiveness of non-ESB approaches, probably because it takes so much effort to build anything with ESBs that they have no time available for considering or investigating approaches from the other side of the fence. I, on the other hand, have lived extensively in both worlds, and my advice to you guys is to loosen up and check it out over here -- the water's fine, and you might learn something valuable!

Wednesday, October 10, 2007 3:43 PM by Tim Ewald

# re: Some thoughts on ESB vs. REST + Dynamic Languages

Our system includes web-based stuff and TV stuff. We do all cross-process communication using RESTian APIs + SQL invocations + UDP broadcast in some places where we have to. We have long-running processes and implemented via database-backed queuing that we rolled ourselves. This is a pretty big, complicated system that integrates a lot of stuff across multiple physical and logical boundaries, and this approach works great.

So, does that mean that you don't need an ESB? I think the single most interesting feature ESB-style products offer is to simplify management of long-running processes. But I'm not sure a database or message queuing solution wouldn't work just as well.

But, independent of that, do you need all the rest of the protocols and products associated with SOA? I'm not convinced that you do.

Tim-

# Brennan’s Blog » Blog Archive » What is ESB and do you need it?

Pingback from  Brennan’s Blog  » Blog Archive   » What is ESB and do you need it?

Friday, October 12, 2007 5:23 PM by Sam Gentile

# Jesus Rodriguez and Arnon on REST+Dynamic Languages vs. ESB Debate

My good friend Jesus Rodriguez has a very insightful commentary on Steve Vinoski comments regarding the

Tuesday, November 27, 2007 6:38 AM by Some thoughts on ESB vs. REST + Dynamic Languages

# Some thoughts on ESB vs. REST + Dynamic Languages

Pingback from  Some thoughts on ESB vs. REST + Dynamic Languages

Friday, June 06, 2008 12:20 PM by Minas

# re: Some thoughts on ESB vs. REST + Dynamic Languages

(Trying to not be narrow minded, so asking for a solution to a typical ESB problem)

How would you do the following:

Pass a set of documents (plus attachments) to a service/endpoint or sorts that would:

1)Look at the request, map it from a Business Service focused namespace into a set of Line Of Business System specific requests (& process them), route synchronous & asynchronous bits around, orchestrate them & send responses to appropriate subscribers (including requestor).

Also, Content Based Routing/Versioning & Re-mapping, and providing service location transparency to clients.

i.e. I point a client to a particular service.

2 years later, I restructure/merge with another company, and want to support both a new and old structure.

With ESB & Convention, this is a straight forward exercise. Configuration can be done later to address restructuring.

Versioning can be handled transparently to clients if desired (by re-mapping).

Also, How are Major Information Groups (that Business Users are accustomed to) moved across.

Are they still large, composed messages?

Obviously transformations, logic/rules etc. make little difference to whether it's implemented via an ESB or REST.

Thanks

Cheers

Friday, June 06, 2008 12:37 PM by Minas

# re: Some thoughts on ESB vs. REST + Dynamic Languages

ps. FYI

ESB.NET Architecture is that of a Federated Broker based ESB.

As such, it's routing & Conventions bear much resemblence to REST in terms of scalability.

It does, however, have all the ESB related features.

There's lots of progress to be made still, but it just shows that like many other solutions, ideals are often hybrids.

Open your mind. Learn off others.

Mix 'n Match, & see what results.

ESB.NET works towards a model that scales from a single simple service on a single instance on a single notebook, to complex business scenarios that are a result of legacy, the usual misaligned line of business systems to Business Services and integration/notification that tags along, and can handle the complexity at internet scale.

...Minas

Leave a Comment

(required) 
(required) 
(optional)
(required)