As larger organizations begin to embark on their service-oriented architecture (SOA) projects, there is some misdirecting going on that you should be aware of, which will allow you to make an educated decision as to, not only what you're going to do, but who's going to help you. At issue is the fact that many people in the planning stages for SOA do not get the proper advice and guidance as to how to proceed, or even what a SOA actually is. Thus, the larger tragedy is that many of these projects will hit the wall, and do so with an impact that will reflect poorly on the notion of SOA, when it's not really a SOA issue at all.
First, be wary if consulting organizations point out their experience in the world of SOA by putting up past projects as proof of their experience. Most, if not all, of these past projects are really JBOWS (just a bunch of Web services) and have no underlying mechanisms to provide agility, which is a core benefit of SOA. The fact is that most end users out there don't know the difference. Always keep in mind that service-enabling existing systems is useless without a mechanism for turning those services into solutions.
The problem is that many of people looking to hire SOA consultants don't understand the difference between JBOWS and true SOA, and accept JBOWS as "experience." In reality, it's an indication that the consultants don't understand the core value of SOA, and thus could send you off in all sorts of dangerous and costly directions. So, make sure to hire consultants who understand that SOA is really about architecture, agility, and changeability, and not just about service enablement. It's easy to expose services; turning those services into solutions is another level of sophistication.
Second, many consultants are a bit too chummy with vendors. Thus, you'll find that they implement the same vendors and technology each and every time. This situation should present a huge red flag since SOA problem domains are all very different, and technology solutions that work best for the solution are never, ever, from the same vendor, over and over again. However, when you sell hammers, everything looks like a nail. The path of least resistance is what you know, not what you should do.
People responsible for managing SOA consultants need to state clearly that you are looking for the right solution, not the one they know, or what may be part of an existing partnership. Indeed, you should quickly overlook consulting organizations with many preexisting vendor partnerships. You need folks in there who are agnostic when it comes to technology, and are willing to leverage the best-of-breed to address your issues.
You've heard it all before: technology should add value to a concept like SOA, not control it. Lately ZapThink has run into SOA efforts that are not playing by that rule. Indeed, the focus is on ESBs and governance layers, and not on getting SOA right from an architecture standpoint. I thought SOA was architecture, right?
At issue are the multi-billion dollar marketing budgets that vendors bring to the SOA world, and thus lead through sheer volume of sales. People like ZapThink who promote the architectural value of SOA, are not being heard above the noise and flash of the SOA-in-a-box movement that's occurring all around us. The end state is invariably a failed project, due to the misuse of technology, and project managers who do not understand their own issues before pulling out credit cards and buying technology. Thus, too much focus on technology is hurting SOA.
Don't get me wrong, I'm not attacking the vendors here. That's just too easy. What I am doing is pointing out the fact that technology, while being very powerful and necessary within the world of architecture, needs to occur as an outcome of the architecture, instead of driving it. While most of you will see that as a logical piece of information, it's still a de facto practice to take an "ESB-oriented" approach to SOA, no matter what the issues are at hand, or, perhaps an "App service-oriented" approach, or a "Governance-oriented" approach, or... Okay, I'll stop.
The result, in many cases, is not something that does not work; it's something that does not work as well as the organization requires. Thus, many companies settle for sub-optimal solutions that they must rework every few years to keep up with business demands, versus solving the problem once and for all, maturing the architecture over the years and not having to keep replacing it.
The correct approach is simple. You start with your core requirements, understanding all aspects of the business, existing services, existing data, processes, etc., and then create a vision of the end state architecture and a complete, iterative map for getting there. You understand patterns here, not instances of technology, and only then back the correct technology into the problem domain, making sure to meet the core requirements.
Third, there must be a predefined process. While many SOA consultants try to use older software development lifecycle (SDLC) and enterprise architecture processes, SOA requires a specific approach that addresses the unique nature of its architectural patterns. For instance, there is a traditional focus on data, but the data must be properly bound to services. Moreover, those services must be properly bound to processes. Plus you need to keep track of all the interdependencies, and how all of this stuff links to SOA governance, SOA security, and event management and monitoring.
Many consultants attempt to oversimplify the process, rapidly moving through or even foregoing the planning steps. Their main focus is the selection of the technology, or, in some cases, they attempt to force fit a problem with a predetermined technology solution. This approach never has a positive outcome.
The fact of the matter is that SOA implementations are complex distributed systems, and thus complex to plan, design, build, and test. The time spent in planning will later pay huge dividends. You should define a rigorous process/methodology that, at a minimum, provides you with a semantic-level, service-level, and process-level understanding of the problem domain, not to mention the governance model and security strategies. Trust me, you can get SOA right the first time, but with more planning and sweat than you expect.
Finally, there is the lack of understanding about ongoing SOA operations, and links with traditional enterprise architecture. You just can't implement SOA, you have to live with SOA on an ongoing basis, which means understanding how the solution exists currently, and how to align it with business as it changes. If your consultant has done his or her job, you should have an architecture where the volatility has been abstracted into a configurable domain. As a result, it's a matter of changing things at the configuration layer to adjust to the changing nature of the business. Therein lies the value of SOA.
If your architecture does provide that degree of agility, than you're going to have to loop back to the beginning to see where you went wrong. Typically, per my previous point, you're planning was insufficient and perhaps you employed the wrong technology solution. In any event, you need to bite the bullet, spend the money and fix it, or you'll find that your SOA actually takes you backward.
The ZapThink take
Bad intentions are not the problem here. I think everyone is honestly looking to do their best, but it's a lack of understanding and perhaps talent in some instances. Consultants who succeed with their SOA initiatives have a wide range of skills, a good understanding of architecture and the value of SOA, and all of the good work that needs to occur to make it work for the client. However, I don't see many out there who fit that bill, and the amount of bad advice is becoming a huge issue. Unfortunately, many of their clients won't figure this out until it's too late.
When doing SOA, or another other complex distributed computing problem for that matter, it pays to obtain honest and objective advice. Even if you only need a consultant for validation of key artifacts, approaches, and technology. That's just cheap insurance. Unfortunately, the number of organizations out there calling themselves "SOA consultants" is huge, while the number of consultants that actually know what they are doing is relatively quite small. Thus, most of their clients are finding that the selling around the consulting services was dazzling, but the services they delivered, and end state solution is typically suboptimal. Indeed, a common trick is to have the "SOA experts" come in a sell the deal and you're left with the kiddies to actually do the work.
The most troubling aspect of all these issues is that most organizations won't understand the impact of leveraging less-than-stellar SOA consultants until it's too late. Indeed, the full impact of the architecture is years, not months away, and selecting the wrong technology, or getting the wrong strategic advice, won't be obvious until it's too late. At least until the checks for the huge fees have cleared the banks, and the consultants are on to their next project.