If you had to name one highly effective enterprise application integration strategy what would it be? An Enterprise Service Bus? A Service Oriented Architecture? A distributed object API? How about an asynchronous messaging substrate?
Let's not fight (and goodness knows it is possible to fight) about what these terms actually mean and let's not slug it out over the merits and demerits of each. Instead, let's start with something I think we can all agree on. Namely, that all of the above are examples of using Information Technology to solve problems for the current installed base of, um, Information Technology.
Sometimes, when my disposition shades towards the cynical end of the spectrum, I find myself comparing these things to pouring gasoline onto a fire. In more optimistic moments I compare them to laying down freeways. It is more concrete but designed to facilitate interconnection of existing concrete (buildings).
I find it interesting that we have a tendency to rush to find IT solutions to our IT problems. A good example of this I think is the speed with which we snicker at the very mention of a swivel chair-based integration strategy. It smacks of wrongness. We feel a strong urge to take the chair away and do it "properly".
This is another one of those "I was that soldier" moments. I have removed my fair share of swivel chairs over the years. However, I have also come to appreciate that they very much have a place in the pantheon of integration strategies.
I could pick many representative examples but let's limit it to just two. Scenario A. Two IT applications need to be integrated because of an acquisition/merger. There is no existing integration strategy or indeed even well-defined integration points because previously, the systems were completely separate and invisible from each other.
They need to be integrated now to meet some joined-up business process need. How to start? My advice is to start with a swivel chair. Yes indeed. Move data from one system to the next manually. If necessary, type it in. If possible, shift it on USB or via shared disk storage. Why? Well, the systems are being integrated for business reasons and it is likely that nobody knows for sure how this will all work out. After all, this is a merger/acquisition scenario. The obvious place to do the integration may not survive the detailed analysis of what needs to be done. Better to start with the Simplest Thing That Could Possibly Work, also known as Minimum Progress Required To Declare Victory. After all, if you cannot build a new end-to-end business process that covers both systems manually then you do not understand the requirements sufficiently to start coding it.
Scenario B. Two mission critical computer systems require to share information. They are old, clunky systems that have a significant amount of information and functionality in common. Something needs to be put in place to keep the information set for both applications in sync. Again, I would start with a swivel chair strategy. For two reasons this time. The first reason is as per Scenario A. i.e. if you cannot build a new end-to-end business process that covers both systems manually then you do not understand the requirements sufficiently to start coding it. The second reason is that right now you have two independent mission critical systems that work. Even if you do join them up using IT, the mission critical nature of the systems must be respected. What if the IT-based integration mechanism fails? Catering for such scenarios is vital in mission critical systems and ensuring that the swivel chair can be put into action if needed is an excellent "revert to manual" fall-back to be able to call upon.