As I wrote earlier last
week, I have taken up the responsibility of making the UltraESB an
even better product! It is really a challenging task as it is already
the best ESB I have ever seen. In this post, I am trying to get a
head dump of me about the UltraESB, based on my initial experience in
the past few days.
To start with, it is a great
open source project where the code is publicly shared on bitbucket at
[1], and is developed with lots of feedback from its actual
enterprise users! It is not just a typical ESB rather it is an AS2
switch, JSON/Data Services and Mock Service container, Security
gateway, Layer7 router and much more.
Best in Performance
As per currently published
statistics, the UltraESB is the best performing open source ESB.
AdroitLogic is continuously testing performance over all the major
open source ESB's to make sure it keeps up with any improvements that
other ESBs are doing, and publishes all the results openly at
ESB
Performance site. AdroitLogic is sharing all the configurations,
materials and pre-configured EC2 images to let any third party run
these performance tests themselves and see the difference, which will
be very handy when evaluating ESBs.
Ease of configuration/development
Being the best in
performance is not enough to become the best ESB. The other key
aspect that I see in UltraESB is that the ease of configuration. To
be frank, initially, I didn't believe that writing mediation logic in
Java is the best way to make the configuration easier. Later I found
that it is very convenient with compared to an ESB with a custom DSL.
The problem with custom configuration languages is that you have to
learn the language and then learn how to apply that language to solve
your integration problem. UltraESB, on the other hand, gives you the
ability to solve your integration problem in Java or any other
scripting languages like JavaScript, Ruby, Groovy, etc... Now you do
not have to learn the language as you most of the time are already
familiar with at least one of these languages, and you can
concentrate on applying the language you know to resolve your
integration problem with the very simple mediation API [2].
IDE integration and tooling
Another advantage of
UltraESB over the other ESBs is the seamless integration with your
development environment. If you know Java, you probably know how to
work with Intellij IDEA, Eclipse, or NetBeans IDE. UltraESB
integrates nicely with all these 3 development environments and
provide the ability to develop, run and debug (step through
debugging) your integration solution within the IDE itself. If you
just give it a try, you will realize how effective it is in solving
your integration problem, rather than spending time on understanding
the languages and how to setup this and that. You can find enough
materials on the AdroitLogic site on the development environment
Integration, for example [3], [4], [5], and on the
YouTube adroitlogic channel.
You do not have to learn
anything you can just get started. Seriously, this will reduce the
development time drastically, at least by 60% even if you have
already mastered the custom configuration language that you are using
with the other ESBs. This is because of the capability to run/debug
the solution that you are developing within the IDE without building,
deploying, etc... This is why I say it is the Future ESB, with
UltraESB developing your integration solution will be exactly same as
writing "Hello World" with Java and running/debugging then
improve it and shaping it up towards the final solution.
Manage/Monitor deployments
All that is about the development phase, now what about the deployment and maintenance? UltraESB ships many options to manage and monitor the deployed UltraESB instances.
- JMX monitoring and management via JConsole or any external tool
- UConsole, a web based console to monitor and manage the instances
- UTerm, a terminal client to manage the ESB, System Administrators loves this idea and using the terminal commands to manage the UltraESB
- Zabbix monitoring with alerts and notifications
for SLA management and
escalation
All these mechanisms gives the best set of features to manage deployed UltraESB individual instances as well as a complete cluster.
Better by Design

The internal design, though most of the users of the product do not care that much, is the secret behind the success of the UltraESB.
The beautiful architecture
behind this great product makes things simple to develop, use and
extend further as required. For example, the native Spring
configuration support allows one to integrate with almost any other
external system seamlessly! A few of the powerful and advanced
features visible to end users is as follows;
- Zero-copy proxy with memory mapped / RAM disk based IO giving extreme performance
- Zero down time graceful configuration update
(other ESBs do have hot
deployment/update, which they recommend to turn off in production
deployment ;-), this is way more than that!)
- Cluster wide management and failover capability for nodes in the cluster (If "nodeA" of the cluster fails, the "nodeB" on the same cluster can automatically take over "nodeA", until it comes back live)
Becoming the best ESB is/was easy but being there is what's important and more difficult. I treat it now my duty to continue to give the best ESB to the users, with UltraESB.
Give it try, and go for a test run with UltraESB to see more...
References
[1] -
https://bitbucket.org/adroitlogic/ultraesb
[2] -
http://api.adroitlogic.org/org/adroitlogic/ultraesb/api/Mediation.html
[3] -
http://adroitlogic.org/resources/samples-articles-and-tutorials/15/20-ultraesb-users-guide-the-helloesb-sample.html
[4] -
http://adroitlogic.org/resources/samples-articles-and-tutorials/15/19-ultraesb-users-guide-configuring-and-using-the-ide.html
[5] -
http://adroitlogic.org/resources/samples-articles-and-tutorials/all-tutorials/80-setting-up-the-ultraesb-with-eclipse.html
Disclaimer: Any information provided in
this blog entry is my personal view on UltraESB and may not be the
view of AdroitLogic.