Enterprise Integration Zone is brought to you in partnership with:

Vincent Partington has more than 10 years of enterprise Java experience. He has written and presented on topics as diverse as performance, security, RIA, and persistence technologies. Vincent Partington is the Chief Technical Officer of XebiaLabs where he is responsible for their flagship deployment automation product Deployit. Vincent is a DZone MVB and is not an employee of DZone and has posted 25 posts at DZone. You can read more from them at their website. View Full User Profile

Top 10 SOA Pitfalls: #10 - Not Invented Here syndrome

06.02.2008
| 16184 views |
  • submit to reddit

At Xebia we are involved in quite a number of Service Oriented Architecture (SOA) projects, from small to big. In that capacity we see a lot of good stuff happening, but we also encounter quite a number of projects that have stalled or failed.

To share our experiences with these SOA projects, Gero Vermaas, Viktor Grgic, Rik de Groot, and myself have decided to write a series of blogs about the most annoying pitfalls of SOA. Each week we will be publishing one item from the list. This way we hope to spread awareness of these dangers and also provide you with a checklist of what to watch out for. Of course, as is always the case with these kinds of lists, they are not complete and not all the issues are as absolute as the title may imply. YMMV!

The first item we want to discuss is the Not Invented Here Syndrome (NIH). Of course this is something that can be witnessed in more areas of IT, but in a SOA context it actually applies on two different levels.

First of all, the idea of a SOA is to reuse existing services. If department A builds a get_personal_details service, there's not much point in department B building a get_address service. Assuming the get_personal_details service returns the full address.

Of course, there may be multiple reasons why department B would do this:

  1. They don't know about the get_personal_details service. In this case there is no proper service registry, a point we will discuss later.
  2. The way they design their application does not cause them to think about reuse. This is one of the things that can happen when applying Big Design Up Front. Something we will also discuss in a future blog (way to build up the suspense, not? ;-) ).
  3. They've known about the get_personal_details service but they decide not to use it. Maybe they don't know what it does exactly, maybe they don't trust department A to get it right or keep it right, or maybe they'd rather have full control over the implementation. In this case, you have some classical NIH hitting you. This is the time to discuss the ownership of the services and allow both department A and department B to feel in control.

While this kind of NIH is not very pretty, it is something that can be fixed on a per-service basis, once the awareness is there. The other kind of NIH we have to deal with in a SOA is the one where you ended up building your own Enterprise Service Bus (ESB), a situation harder to resolve. We've seen two ways in which this came about:

  1. In the beginning of the 2000's, corporations using message based integration discovered the need for reusable generic services (e.g. translation, routing, transport, etc.). This led to the development of a lot of homebrew messaging frameworks, usually on top of a messaging system such as MQ Series. While these frameworks served a need back then, their very nature has caused them to become intertwined with a lot of the applications in the enterprise and thereby hindering the introduction of an industry standard ESB.
  2. But even now people are writing their own ESB-like services. Quite a number of architects have the impression that ESB's are pushed heavily by the vendors and disregard ESBs as useless systems they can do without. While that bit about the pushing may be true ;-), writing your own translation, routing and transport services does not strike us as a very sensible answer. You are in fact building your very own ESB!

In both cases, getting out of this situation involves a lot of work. These proprietary systems are at the core of your systems, so phasing them out will take a long time. For example, if you would decide to buy a COTS ESB, you would need a migration scenario where you would migrate one service at a time from using the old system to the new ESB. You would need a bridge between the old and the new system for that transition time. Actually, we have not seen such a migration scenario work all the way through to the end because the old system usually still lingers in some corner of the organization.

The moral here would be: before you start writing your own services and your own ESB, have a look at what's available. Your "temporary" service will probably be around for a very long time!

Next week, Rik de Groot will continue with pitfall #9.

References
Published at DZone with permission of Vincent Partington, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)