0

I have a web application which needs to interact with all the major CRM and ERP systems in order to send and receive data.

What according to you will be a better approach.

  1. Design this whole logic inside the web application,maybe a component for each interface
  2. Use a ESB.

Please suggest what will be the best approach to implement this, any other workarounds,designs are also welcome.

Akshat
  • 5
  • 4

1 Answers1

1

Web services were pretty much tailor-made to address the issue of communication and integration among many disparate systems, so it seems like that would be the most logical solution.

If you require ordered messaging, guaranteed message delivery, etc then an ESB is probably your best bet. Otherwise your web application should be able to integrate directly with the other systems via web services.

Finally, you will probably want to create components in your web application anyway to encapsulate the logic of each system (doing this now will help to ensure minimal changes are necessary if/when you replace one of the external systems). For example, for a recent integration with an accounting system I created interfaces and abstract classes to generalize the functions inherent to all accounting systems, and then created concrete classes that implemented that functionality for the specific accounting system I was integrating with at the time. The benefit to this is that if my client ever changes accounting systems in the future all I will need to do is create another concrete implementation - I will not need to rewrite the code in my client application.

Brian Driscoll
  • 19,373
  • 3
  • 46
  • 65
  • As addition: To reduce overhead for maintaining different systems/technologies, try to communicate with your foreign systems directly (web service) as much as possible. Whenever you have to implement something into the other system (probably custom ESB solution) you have to maintain it too. Depending on how many "all major" is, this could be a lot effort. – Adrian Dec 19 '12 at 13:49
  • Thanks Brian,is it a good practice to have clients created for multiple types of interfaces, I mean I will have around 20-22 interfaces in all. I was thinking to use a ESB as it will act more like a middleware which will process the request which it gets. – Akshat Dec 19 '12 at 13:53
  • Implementing an ESB adds a lot of complexity to an application. I would follow the YAGNI principle and avoid using an ESB until you absolutely need it, but that's just my opinion. – Brian Driscoll Dec 19 '12 at 13:57
  • So, you mean that I design interface for each application and implement it.In that case should a component/adapter based model is a good approach or monolithic application. – Akshat Dec 19 '12 at 14:01
  • Brian, can you please explain me with the help of some example – Akshat Dec 19 '12 at 14:03
  • Others have explained better than I can, see here: http://blogs.mulesoft.org/esb-or-not-to-esb-revisited-part-1/ – Brian Driscoll Dec 19 '12 at 14:11