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.