Wednesday, June 26, 2013

To ESB or not

These past few days I have been busy finding out a good workflow software that can help me get all the different parts of my new app co-ordinated. At first I had a client server model where the server does all the heavy lifting and the client requests action. This is a good model of design when simple tasks are to be run that do not need parallel work execution. Also all the workflow logic was separated from the server module and was present in the client module. All started off as a small java project and quickly grew into a monster that needed mode firepower and improvements. Although from a coding standpoint functionality was abstracted and was easily extendable, but I started feeling that the one server model where one requested action can run in parallel was slightly slower than what I wanted. The design was not scalable.

Nowadays I have been reading so much about scalable design and similar technological feats that I sort of wanted to jump into some project that has this. So I started rebuilding my old project with these things in mind. Older modules were triggered when client requested some action. For example fetch something or calculate something. Now this calculation might take time and could be a long job. It was not executed in parallel. Also if I had to run two jobs in parallel where one task was dependent on the other there was no way or no logic of coding those ideas. But the main bottleneck was parallel execution.

Workflow is something that will greatly help in the execution process and co-ordinating them. But designing a workflow system from scratch is again a big job. Good for a project but not good when the end goal is something else where workflow is a utility function that you need. So, I recently came across a set of tools that come under the umbrella ESB. From what I get from my research, it is a vague term that has a varied set of products under its umbrella, with each specializing in different areas. So, for  last few days I have been searching and searching for ESB products. ESB stands for Enterprise Service Bus. A term that symbolizes a engine that allows mix and match and transfer mechanism, coupled with a workflow system. I looked at different ESBs – UltraESB, MuleESB, WSO2 ESB. One was good at performance, and one was good at features. But at the end it seemed that MuleESB is the easiest to use. It has a very intuitive IDE integration available for Eclipse that makes using the ESB simple and fun. I rather liked it. No wonder it is used across so many production environments. MuleESB is what I will use for starting off, which I hope will make the workflow part of my project across JMS and HTTP endpoints and sources easier.

No comments:

Post a Comment