Recent SOA questions/thoughts

We've had some interesting SOA desing questions lately. Here's a quick rundown with my thoughts...
  • Is it a good idea to wrap DB calls in a web service?
Some argue that this is a waste for internal applications. That these services don't provide any business value - query results are simply regurgitated back to the caller.

While I agree that these calls don't add much business value, the benefit lies in abstracting the DB calls from the caller. In simplest terms, wrapping access means that callers need not concern themselves with managing database connections. Additional changes/enhancements to the schema can now be handled in a single place rather than mandated enhancements to DB clients - even the DB implementation, location, and authentication updates are transparent to users. To me, services like this - services that simplify interactions - are a big part of what SOA is all about.
  • As SOA systems evolve/extend, is it a better idea to plug in new functionality or extend existing components? For instance, let's say there is an SOA application whose flow consists of calling component A followed by component B (A -> B). New functionality needs to be added to the system. You can either modify one of the existing components to add the new capabilities (A' -> B) or you can create a new component and plug it in (A -> C -> B).
If the new capability is functionally similar to either A or B, this may muddy the waters. Regardless of the situation, I favor the plug in approach. Again, I feel this is one of the big benefits of SOA - the ability to add functionality to a system without changing and retesting existing code. It feels simpler and cleaner. Smaller, highly specialized components are easier to debug and maintain than larger components. They're also more likely to be reused. I feel pretty strongly about this.
  • One of the things I still struggle with is when is it better to code your SOA interactions through a business process vs "regular" web service code.
My current thinking is that if all you doing is calling services and mapping values, then a business process approach is acceptable. I'd still rather code these interactions in something other than BPEL, but it may only be because I'm more comfortable with that approach. I've just started to code a rather large business process in BPEL and I'm finding it to be OK. The big benefit comes in the ability to visualize the process via BPN. This makes it easy to review the flow with business users.

Comments

Popular posts from this blog

I Believe...

FRail :include

Performance Tuning JCAPS - Part 2