by Robert Cooper
Steve Jones' SOA Anti-patterns is one of the best things I have read in a while. I do have to say, however, that I must be missing something on one point here.
Organisations start with a detailed Process map and then attempt to "fit" this into a Service Oriented Architecture; this refactoring leads to process becoming the dominant feature and leads to a Process Oriented Architecture (POA) rather than SOA.
An organisation's "Services" come in two basic types, firstly end-to-end processes that co-ordinate lots of individual steps, and secondly a large set of fine grained services that represent individual steps. Any hierarchy or structure is solely from the basis of process. The fine grained services proliferate and become difficult to manage while the large business process elements become difficult or impossible to change. The systems slowly, or quickly, stagnate and lead to solutions being built on top of the existing solution and the general treating of the process oriented system as a legacy application.
I must be missing something here, but this seems to represent EXACTLY what I hate about BPEL orchestrations. Now, I tend to be a fan of having somewhat fine grained services for systems-type access, and larger "Service-Services" that call back into them. The problem here is, both the anti-pattern and the resolution are pretty murky:
The first resolution is to independently of the process map create your services architecture. This will provide the structure for breaking down the processes and creating a clear hierarchy of use. Next, this service architecture should be over-laid onto the process map to understand where the cuts should be made. The current solutions can then be refactored to create a more service oriented solution by attacking the major inflexibilities in the system and then looking towards incremental change of the current systems.
This isn't even so much about a technique or a pattern. What he is really saying here is "Hey, it helps if you plan stuff out and put a little A in your SO." That is a whole lot of words for a "well duh" kinda point.
I do have to say, however, that Point to Point Web Services, DIY Transport, UBER Service and Defensive SOA all represent things that I have been railing against for months now at my current employer.
Having woked at both an ILEC Telecom and one of the big three US Railroads, I can safely say that there is a lot more "system" thinking than "business" thinking in these types of company's IT departments. The IT staff in these sorts of companies tend to approach a problem from the perspective of, "ok, we have to solve a problem in this area, so that means we need to replace systems a, b, and c. They serve such and such a purpose, so that means that we need to come up with a solution that basically does x, y, and z."
There's probably some overlap of ideas here, but there was a similar article at developerWorks:
I don't think this IS an antipattern. Look at that "effects" graf: the first two sentences, in my judgement, describe a good outcome.
Cheers for the feedback!