Saturday, May 15, 2010

ESB Performance site http://esbperformance.org launched..

The Enterprise Service Bus [ESB] Performance site is now live, and hosts information about the ESB Performance Test Framework and the ESB Performance Test Suite available free of charge to benchmark the performance of different ESBs.

Along with this launch, AdroitLogic also released the Amazon EC2 AMI "ami-8bb158e2", which includes the UltraESB distribution that includes the ESB Performance Test Suite ready-to-run on the cloud.

By running the benchmark locally, or on an EC2 node, one can easily compare ESBs from many vendors. Since the ESB Performance Test Framework is configured to run on the local interfaces, network isolation will not affect the results, and one can be certain that each ESB benchmarked was tested under identical conditions on the exact same hardware - for a true apples-to-apples comparison.

AdroitLogic will be happy to provide support free of charge on using the test framework and suite, and would welcome suggestions for improvement.

Monday, May 3, 2010

Transactional ESB use cases made simple with the UltraESB

The UltraESB provides excellent support for JTA XA transactions as well as JMS/Database local transactions, and this example shows a JTA XA transaction and a local transaction being used in the same message flow, with a JTA suspend and resume - from a different thread! The article can be compared with similar examples from JBoss ESB and the WSO2 ESB, and the ease of use and the flexibility of the UltraESB clearly seen.

The complete  configuration required for this example, is less than a page of text, and does not contain hidden source code, classes, or bundles to build and deploy etc.. just edit the configuration and run!

Transactional ESB use cases made simple with the UltraESB






Monday, April 26, 2010

Message aggregation with Streaming!

We've just published an article about two of the samples that ships with the UltraESB on advanced message cloning and aggregation with streaming. This was triggered by a real user who was attempting to write this logic on their own, as most - if not all - ESBs did not support it a month back!

We've taken the challenge and delivered the first results within a few days, supporting streaming. Then we developed support for timeouts and completion of partial responses as well all within a couple of weeks.

Read the complete article here

The complete samples (i.e. sample #211 and #212) now ships with the UltraESB, and the ToolBox GUI can be used easily to test these in 5 minutes. The UltraESB also ships JUnitPerf unit tests to load test these examples along with the source for users to play and extend them.

Brief introduction to the scenario
The scenario simulates multiple concurrent users issuing JSON requests of the form given below, with a request to multiply two variables v1 and v2, along with a text message:

{ "message" : "hello world, I am client N!", "v1" : 100, "v2" : 300}

There are three backend service endpoints servicing such JSON requests, but each expecting a slightly different message format. Thus each such message by a user must be cloned and transformed into a format suitable to each destination backend systems In this example, the format expected by the backend services are:

{ "prefix_for_Server " : "Hello Server  - hello world, I am client N!", "v1" : 100, "v2" : 300}

Each backend JSON service responds to such a request within a random delay of 1200ms as follows, adding a "result" as v1 * v2:
 
{ "prefix_for_Server " : "Welcome to Server ", "v1" : 100, "v2" : 300, "result", 30000}

These responses now needs to be aggregated and sent back to the client as one single message, where each <part i> for i=1,2,3 denotes a response as shown above.

{ "merged": [ <part 1>, <part 2>, <part 3> ]}

I would like to challenge any other Open source or Commercial ESB vendor to try to simulate this scenario too and share a link!

Monday, April 19, 2010

Using the UltraESB to proxy and load balance requests to Tomcat

Here is a complete article that describes how the UltraESB can be used to proxy requests between multiple Tomcat instances with load balancing and fail-over using sticky sessions. The mediation.getJvmRoute() API call makes it simple to query the Tomcat jvmRoute when using a JSESSIONID cookie or a jsessionid path segment. This value can then be used to load balance with fail-over between multiple instances of Tomcat.

http://bit.ly/aZL4sU

Wednesday, April 7, 2010

Replacing an F5 and its iRules with the UltraESB

A user will soon be replacing an F5 Big IP with the UltraESB by re-writing the iRules as mediation logic. This creates a proxy service that will intercept all requests using the url pattern "*", and then use cookies for routing into two backend server pools where the load is split between two federated groups. This incidentally allows them to also replace Apache servers used to front the Tomcat servers.

The complete configuration used is along the lines of the following;

<u:proxy id="web-proxy">
    <u:transport id="http-8280">
        <u:property name="url" value="*"/>
    </u:transport>
<u:target>
    <u:inSequence>
        <u:java><![CDATA[
            String pool = mediation.getCookie(msg, "POOL");
            if ("TWO".equals(pool)) {
                mediation.sendToEndpoint(msg, "ep2");
            } else {
                mediation.sendToEndpoint(msg, "ep1");
            }
        ]]></u:java>
    </u:inSequence>
    <u:outDestination>
        <u:address type="response"/>
    </u:outDestination>
</u:target>
</u:proxy>

Saturday, March 13, 2010

Tricked by 'open source' ?

This is a re-post of my reply to "C Curl":

AdroitLogic already shares the code of the UltraESB with real users! .. and I do come from a history of over 4 years of contribution to the open source Apache Synapse ESB, where I contributed over 70% of its last released codebase.

I truly believe what my company offers is better - as we share the 'real code' with 'real users' who are interested, and not using the term 'open source' for marketing reasons to bait customers. The software we provide is offered free of charge for unlimited and perpetual use.

Many companies that have 'open source' products, swiftly switch over enterprise customers to the 'commercial version's that are .. of course 'much better' ;)! .. the reality is this code is not shared with the customers in almost all instances. The customers then run versions from vendors' internal 'support branches' they have never seen or heard of!

Although the 'open source' version of the code may be available, even that may not be build-able, or understandable for an average user that easily. In 2-5 years time the open source companies maybe gone too; and along with it, the open source code repository, bug tracking and maven repositories and wikis etc holding critical artifacts.. It would certainly be an interesting situation for a customer to be in, when they finally find that they have been living on a 'support branch' of an open source project, for which they have no access anymore!

The Apache Software Foundation tries to overcome this issue by creating an open and diverse community:

"The project is considered to have a diverse community when it is not highly dependent on any single contributor (there are at least 3 legally independent committers and there is no single company or entity that is vital to the success of the project)" [1]

I'll leave the rest upto you to decide...

[1] http://incubator.apache.org/guides/graduation.html#community

Tuesday, March 2, 2010

Use the UltraESB as a Security Gateway for HTTP/S, REST, SOAP, Hessian, Text etc

I've written an article that explains how the UltraESB could be used as a HTTP/S or SOAP Security gateway, to front internally deployed services of an organization in a SOA.

The UltraESB allows SSL termination, WS-Security validation/termination, HTTP Basic/Digest authentication enforcement, Client SSL certificate validation etc, from a security point of view. Additionally it provides validation and transformation capabilities - and supports secure XML processing which safeguards the infrastructure from XML based attacks.

Read about it here: http://soa.dzone.com/articles/use-ultraesb-security-gateway