Wednesday, May 20, 2009

ESB - Does my project need it?

A key component of the SOA architecture is ESB. Most often ESB is used as silver bullet to clean-up the Enterprise integration mesh.

I came across quite an interesting perspective after a brief session with Jim Webber, an advocate of Guerilla SOA.

From my past experience following are some of the key reasons for using an ESB.

ESB cleans-up the integration mesh (or mess)

A typical diagram of ESB based transformation is as shown above. In reality all the mesh gets into the ESB itself; ESB encapsulates the mesh. Subsequent to the ESB based solution implementation, enterprises would have to setup teams to manage the ESB and deal with the governance around the ESB usage.

Eventually there is a possibility of the mesh outgrowing the ESB and spilling over; taking the integration back to where it started. Only difference this time is that the ESB will be part of the mesh.

ESB is good for business process orchestration

This is one of major feature that attracts a lot of developers. As a result, the business process gets into the ESB. The ESB now contains the critical business process of the enterprise, apart being just an integration back bone. This makes whole system extra complex with business logic spread all over.

Other ESB vices

In general usage of ESB results in vendor lock in. Business process is always wired in using vendor specific languages.

Performance hit with ESB is significant. More dollars are spent scaling this beast.

Occasionally project requires development custom adapter/data transformers to be used with ESB - additional effort for the development team with already strict time lines.


Is ESB useless?

No, its not; but ESB is not a silver bullet.

ESB assists the project in meeting the data transformation and communication requirements. Its a good candidate for dealing with disparate protocols (FTP, IIOP, and SOAP) between the interacting systems

How do I deal my integration mess?

Business Chaos Modeling!!

As I understand, Guerrilla SOA advocates modeling the SOA integration based on the real world business process. This is an interesting perspective.

As we all know traditional software that models the business domain is the one best meeting the business requirement. Why can't we extend this to SOA?

Just model the business interactions between services. If thats a mesh, so be it. The business itself is running with so many interactions.

If a clean-up is required, then the change should originate from the business domain. This business domain change will percolate and would warrant a change in the SOA model.

I feel this is idea of modeling the business chaos among the services is so much in line with the philosophy of SOA which promotes the alignment of software systems in line with the business.

ESB can definitely not clean-up the so called chaos that originates in the business domain.

Business Process Orchestration

Business process is just business logic; why treat the process as a special entity? Implement the process like any other business logic. Such an implementation would ensure the entire business logic remains as a single unit and is more manageable.

Managing Chaos

Manageability of the solution/system post implementation is critical to any client. Although we model the business domain mesh in our system, it critical that the mesh be manageable. Monitoring and control interfaces to manage interactions are essential.

Summary

A manageable business integration (SOA), with thoughtful ESB usage would definitely make the client happy and align the implementation with business!!

Hmm...quite a change of ideas in me after getting to know about Guerrilla SOA!!


3 comments:

CrazyTechy said...

I agree with your thoughts, ESB should be used for transformations and Tranport Protocol conversion.
SOA based implementation should be driven by the business not by the backend applications. The approach should be Top Down not the Bottom Up Approach, in the sense Business process should drive the design of the services not the way how the backend works, Hope you agree with me :)

mmh said...
This comment has been removed by the author.
mmh said...

If we consider ESB just for integration, I kind of agree with you. If all the systems expose 'web' services, then there is no need. However, in real enterprises there are other needs like security, throttling, logging etc. ESB allows us to implement these in a centralized manner.

Have not read it completely. Will update my comments once I read it.