Rolling your own Integration server
I have been doing a couple of solution architecture reviews lately… and I came across yet another situation, where people are trying to build their own integration server. It’s unfortunately not the first time I’ve seen this common mistake!
So here is a bit of integration 101:
Message oriented middleware – eg. MSMQ, MQ Series are good for ensuring reliable messaging, and are good for enabling message passing between distributed systems, including replay functionalities, supported through features like persistent messaging, transactional messaging etc. Nowadays, with the advent of WS-ReliableMessaging and the implementation in Windows Communication Foundation, basic transport level feature for doing reliable messaging couldn’t be easier.
Message/Document transformation – the mapping service out of BizTalk Server, as well as various other message broker technologies enables easy definition and implementation of message and schema transformations that are often necessary when you’re sending one message from one application to another application. Furthermore, this sort of message brokering/mapping service keeps the logic to do with message transformation/translation separate from the rest of the business logic – hence there is nice separation of concern in your code. More advanced features like message based routing also comes for free.
Process Orchestration – here is where higher order value for doing integration is seen. Long running transactions can be easily maintained through technologies like BizTalk Server. Coarse grain business capability level services can be built easily by orchestrating fine grain activity services. The service oriented architecture principle is supported through the availability of composite service end points to be consumed.
Lots of other desirable features of an integration server such as clustering, failover, adaptor framework, logging, business activity monitoring all will make your life easier, through out of the box functionalities.
With all this sophisticated functionalities built through proven engineering excellence (ie. The expert product groups that build this for a living), why would you roll your own integration server out of some basic transport plumbing?