Wednesday, June 03, 2009

Component Architecture of WSO2 ESB

While working on WSO2 ESB I thought of take the architects knife and cut the WSO2 ESB in a design time to see the components. It was interesting that there are lot of components bundled inside the ESB that the few of them only visible for the outside.
I did my operation from the bottom and found the Transports first. WSO2 ESB supports all the widely used transports including HTTP/s, JMS, VFS and domain specific transports like FIX. A new transport can add easily using the Axis2 transport framework and plug-in to the ESB.
Variety of transports brings variety of message content/payload to the ESB. To identify the message by using the content type and make it to common XML infoset done by the message builders. So there are message builders associate with each content type. WSO2 ESB contains message builders for text based content as well as binary content.
Message formatters are the opposite partners of the builders, formatter convert back the message to the original format by referring the content type just before the message handover to the transports. Similar to the transports user can implement new message builders and formatters by using the Axis2 framework.
I found the endpoints stay as a logical component with the transports. Found two sets of endpoints Address and WSDL. An address endpoint can use any available transport to dispatch the messages.
Proxy services the virtual services in the WSO2 ESB that implemented using message receivers and open up to accept the messages. A proxy service can access using a URL similar to a normal web service address. Proxy service allow to publish a WSDL to suite for advance usage. Any available transport can be use to recive and send messages from the proxy services.
Event-sources are another implementation of message recover to handle messages on eventing. Including subscriptions and events.
The power of the WSO2 ESB remains with the comprehensive mediator library that service for different aspects. Using the mediator library we can implement widely used MEPs and EIPs. Writing a mediator is a simple task for a developer because WSO2 ESB provides a healthy framework for that. Mediators can implement using various technologies including Java, scripting and Spring.
With the mediators I found the sequences that act as the configuration component for the mediators. Sequences allow to organize the mediators to implement pipes and filters pattern.
Tasks and commands found together that tasks provide facility to configure scheduled jobs in the WSO2 ESB and tasks allow to execute internal and external commands for mediation.
QoS components that implements reliable messaging and security for the proxy services comes with the Apache implementations of those two modules Rampart and Sandesha.
Configuration is the architecture diagram for an ESB architect. WSO2 ESB has an inbuilt registry/repository to store the configuration and configuration metadata and it provides the facility to use a remote repository as well.
Components that helps to run WSO2 ESB on production environment can find among the components as well. These components make clustering, high availability and load balancing capabilities.
Finally I found the GUI components that make the comprehensive management, configuration and monitoring GUI. GUI has done on a layered architecture by separating the backend and frontend concerns . This allow the user to connect to multiple backends using a single GUI console.
The component based architecture of the WSO2 ESB has enhanced the loosely coupling nature with the usage of OSGi. All the components are built as OSGi bundles.
Next time I'm planing to use the architecture knife to cut the WSO2 ESB on runtime.

5 comments:

Eric said...

Just curious, will this work with a proxy service like www.proxiesforrent.com? I have a lot of dedicated http and sock5 proxies from there (username/password required so nobody else is using them)

Asanka said...

So as I understand your requirement is to place WSO2 ESB behind a proxiesfront service and route messages ?

Ayanthi Anandagoda said...

Very nice - WSO2 ESB for dummies :)

Ruwan Linton said...

To answer Eric's question, yes the core runtime of the WSO2 ESB is Apache Synapse and it can handle the behind proxy deployments very well. I must say we do have that sort of deployments as well.

You just need to configure the HTTP transport to use the proxy host and ports and it will work just fine.

Ruwan Linton said...

BTW: very nice blog post Asanka, I am extracting content to be put into the ESB documentation as well.

Thanks!