ESB for Python?

taiganaut picture taiganaut · May 10, 2012 · Viewed 7.4k times · Source

At work we're debating choosing an off-the-shelf full-stack ESB (Enterprise Service Bus -- http://en.wikipedia.org/wiki/Enterprise_service_bus ) versus rolling our own around an AMQP system such as RabbitMQ.

Part of the concern is that our ecosystem is PHP moving as fast as possible to Python, and what APIs we already have all pass messages in JSON. The search space on ESBs and 'SOA solutions' is really, really polluted; either that or this just isn't a Python Thing(tm). Thus I ask here: it seems that all full-stack ESB solutions that we've considered are primarily focused on integrating SOAP-based components. That seems like a lot of double wrapping and unwrapping of messages that we may not want to do. Also, we'd really like to write our service-to-ESB adapters in Python if we can.

I should note here that the PHP/Python ecosystem is internal -- many of our clients are fairly hidebound organizations using big monolithic enterpriseware with which our apps integrate. They would be happy with SOAP, XML-RPC etc for our customer-facing APIs. We've already had requests. So, at the border, we may end up eventually providing both JSON-based and SOAP-based services; just not internally.

tl;dr: Does anybody have a favored full-stack ESB for use with Python apps? What about a non-favored one that you've worked with (and how terrible was it, anyway)? Do you think that wrapping something like RabbitMQ is a better idea for a PHP/Python ecosystem?

Answer

Selim picture Selim · May 17, 2012

It really is a big question, more like a couple of questions in one, if I may. So please excuse me if I misunderstood you.

An ESB is, by definition, not really coupled to your choice of language in implementing your applications. So no matter if your apps that you want to connect in a SOA manner are written in PHP or Python, you should be able to expose them in a SOA. JSON on the other hand is a bit of an off choice in the SOA world and this choice is really important.

Many of the COTS ESBs offer some level of REST support. Mule, ServiceMix, WSO2, JBoss are some open source ones. If you prefer to go with a commercial vendor I believe Tibco and Oracle have either out-of-the-box support or can be implemented with a bit of coding.

Your choice of using any of the message brokers such as RabbitMQ or AMQP is really about the transport - which is once again not really directly related. Then again, if your goal is to add messaging among your applications it is a valid question which I cannot really answer.

If you can write your main motivation for your interest in an ESB it would be helpful for a better answer.

HTH