SOA, ESBs and JBOWS, oh my!

June 3, 2008

First, I should say I am a total neophyte when it comes to SOA or ESBs. I just stumbled into this SOA party, with my fanny pack and my walking stick and my perpetually bewildered expression. But as a neophyte struggling to understand concretely what I instinctively understand is a vitally important concept or movement or architectural style or religion or whatever SOA is, I must say my bewildered expression isn’t out of place. Many blog posts or articles on the subject open with a comment on how notoriously undefinable SOA seems to be – at least to the extent that experts in the field, whoever they are, can agree on something. There are some things everyone seems to agree on, though. The most prominent of these is “SOA is not a technology.” This is often followed with a stern warning about how you can’t “buy it”, it doesn’t come “in a box”. There also seems to be consensus among those who do a lot of thinking (or at least writing) about SOA that it is about “Business-IT alignment.” That sounds like a catch phrase to me that doesn’t communicate a whole lot of useful information, but I take it to mean that the practice of SOA is a holistic practice, business wise one that seeks to understand the larger strategic goals of the organization as a whole and organize and coordinate its myriad software systems and the business processes they support in service of the Big Picture, the Big Picture ultimately and inevitably being profitability (what else is there in this glittering capitalist wonderland of ours?)

And then there is the ubiquitous prejudice (bordering on hatred) that SOA and its practitioners seem to universally hold against the poor beleaguered “Silo”. (Oh Silo, who weeps for thee?)  And finally, to finish up the things everyone seems to agree on, it seems that SOA is definitely not JBOWS.

Oh, and SOA is loosely coupled. It is definitely loosely coupled.

However, none of those aspects of SOA says much about services or architecture, except maybe the loosely coupled part. Business alignment, agility, “not technology” – those seem like outcomes or goals of a particular type of architecture rather than a description of an architecture – or even a description of an architectural style (like the mud hut or Victorian mansion). Nevertheless, SOA is about architecture, because architecture is in its name – but it is the concrete part of the thing that seems to be in such hot contention – do you need WS-*, an ESB, must you have a regipository, should messaging be asynchronous, Request Response, point to point, brokered, RESTful, Queued, should services be layered, data oriented, process oriented oh goodness, just don’t buy it in a box! Because that WON’T be it!.

Well, it is all very confusing. You kind of have to pick a camp and do your designs that way, when you’re fresh meat like me and haven’t been seasoned in the fires. I myself have selected from the shelves a nice, fresh Bus based, business unit centric sort of approach to SOA a la Udi Dahan, but am still very curious about the others, the ones with repositories and registries and that use WCF and WS-* and REST and dynamic routers and whatnot.

Anyway I was reading Sam Gentile’s educational SOA series  and it led me to reading some other thingsand I came across a metaphor for SOA that finally made it click for me in a real way, and now I’m not so perplexed about all the various hotly debated approaches because they are just (very important but equally valid) different approaches to a unified, relatively stable vision of what SOA is – because SOA is technology, of course, and it is architecture, but it isn’t a style of architecture, like mud huts VS Victorian mansions, it is a scope of architecture, like Building Design VS Urban Planning. SOA is about turning ad hoc communities of software and process into an integrated economy composed of towns that are part of larger counties that are part of larger states, and so on. SOA is about the design and execution of the master plan, the infrastructure and government and laws that all of an organizations IT entities must follow to enable peaceful, productive commerce all around. And what isn’t mandated by the law of the land is left up to the organizational units to rule themselves and their component sub communities as they please. How autonomous of them. All very hierarchical and organized. I also suspect (based on what I’ve read, mind you, not what I’ve experienced) that SOA’s often tend to grow like many cities, patches of disorganized systems agreeing to abide by a common set of rules, setting up transit systems and infrastructure between them, and these become cities which become models for other areas of the organization to follow suit.

What I like about this metaphor is that it captures many of the individual desired outcomes of SOA pretty nicely in your brain, and this is important because trying to picture what “driving increased strategic business agility and alignment into the enterprise” looks like in a way that can help you build it is a rather tall order.

For instance, perhaps each LOB application is something like an individual business or even a person who has some autonomy, makes some decisions for himself, but for the most part he must communicate in a language common to his local community and must follow the local customs, such as a specific technology stack. The larger communities to which each citizen belongs have more autonomy as a group. Maybe these are Services. They have their own culture, their own customs, and by and large they do things their way. But as a unit they must participate in the larger economy, they must import and export goods and services to other communities in an organized, coordinated way and report progress and pay taxes to the governing body and so on. Therefore at least those members of each community (endpoints) charged with conducting business on behalf of the community must,  in addition to understanding local culture and customs, also speak the national language, convert local money into a common currency, understand the global business protocols.

Clearly, you can’t “buy” something like this – you don’t march into to the wild west and order your “city” from the Sears catalog (or your favorite vendor), complete with a set of laws and a functioning government. You can buy a bunch of concrete and tools (such as WCF), or even a fully functioning subway system (such as an ESB), but the thing itself, the transformation of wild tribal cliques into a coordinated, modern, centrally governed “society” of connected systems, must be built piece by piece, tailor made, using many different kinds of physical infrastructure along the way as appropriate while implementing appropriate rules, laws, protocols, etc. For the whole rogue crowd to work together in a single, functioning digital economy you really need to gather the tribal chiefs and understand their needs and get participation and buy in because if you don’t then if not an outright revolution at least a certain amount of subversive activity is certain to undermine the functioning of your new society. No vendor can sell the solution to that.

Incidentally and off topic, this paints me a nice image for JBOWS. I like to imagine taking disparate groups of people over a wide geographical area who all speak different languages and dialects and have totally different cultures and giving each of them a telephone and a set of phrase books and expecting them conduct meaningful and efficient commerce. Throw a phone book in the mix and you have JB
OGS
.

So anyway, this may or may not resemble what people mean when they talk about SOA, but it is what I have managed to glean, academically speaking, from all the shrapnel that is flying around.

Share: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • del.icio.us
  • DZone
  • Digg
  • Google Bookmarks
  • Ma.gnolia
  • Technorati
hello
  • Nathan
    Rob, I responded with a new post. Thanks for the debate, It's been englightening.
  • Rob Eamon
    Typo in the InfoQ link above. The correct URL is http://www.infoq.com/books/enterprise-soa
  • Rob Eamon
    "the city metaphor is not just “architecture in general”, or “enterprise architecture in general”"

    META Group, and others, long ago equated enterprise architecture with city planning. Each of the characteristics you mention, "autonomous nature," "hierarchy," "set of mandated conventions," etc. describe typcial architecture aspects. The emphasis on those characteristics may vary from architecture to architecture certainly, but SO principles didn't introduce these notions. They've been around a long time.
  • Rob Eamon
    "...can you have a service that is purely human based, with no integration point with technology?"

    Yes. Business do that all the time. They might use Excel to track things, for example, but it's hard to argue that the Excel part is a "service." It is a tool, an "implementation detail" and is but a part of the service.

    Steve Jones, in his book "Enterprise SOA Adoption Strategies" (free download at http://inforq.com/books/enterprise-soa), states:

    "The objective of a service is to represent what the business does and place a boundary which all parties, but predominantly the business, can agree on. It is this representation of the business on which the createion of a Service Architecture must be focused, technology is very much a secondary element and many of the services will never even be realised using technology."

    Now Steve is firmly in the "SOA is a business architecture and technology SOA should be called SOD (service oriented design) or tSOA" camp. But it reinforces my point that SO can be applied at differing levels of scope and is not always about technology (though I understand that the conventional wisdom is that SOA is exactly about technology).

    "Traditional architecture or generalized EA doesn’t mandate service autonomy or a common, enterprise wide infrastructure (or protocol), or centralized governance or loose coupling,..."

    "Traditional architecture" or "EA" will mandate characteristics and constraints. The characteristics and constraints you've listed have appeared in non-SO architectures before. For example, EAI influenced architectures have touted loose coupling for a long, long time. Centralized governance is not unique to SO. The only relatively new thing SOA brings to the table, indeed, the *only* thing SOA specifies IMO, is that the major components are to be services whose implementations are separate from the interfaces.

    SO principles do not, IMO, "mandate a common, enterprise wide infrastructure (or protocol)." SOA definitions, such as the OASIS Reference Model, generally do not specify how services interact/communicate. Just that they do. One may decide to define a particular architecture using a common, enterprise wide infrastructure, but that is not a necessity to be SO.

    One can use direct, service-to-service communication. One could use mediation of some sort. Both approaches (and others) are equally valid and would be driven by other desirable architecture principles (such as those associated with EDA, for example).

    "I can’t even picture what SOA could possibly be about if it isn’t about how units of business functionality as automated by software are expected to interact with one another."

    You're right that typically SO efforts are focused on the things that are to be automated but not everything needs to be automated. SO principles can be applied (should be applied?) beyond just software.

    Your view is that SOA starts and ends at an enterprise technology level (please correct me if I've mistated your view). Others have different views. My opinion is that SO can be applied at any level, with varying degrees of impact on the overall business. Clearly, SO applied to an application architecture is going to have fairly limited impact, especially compared to SO applied to business architecture, which is much broader in scope.

    You touched on the higher level: it is "units of business functionality...interact[ing] with one another." At a business scope, technology is not in the picture. As SO is applied to lower scopes that's when the implementations get mapped to people, technology, software, etc.

    "And I haven’t really heard of SOA being applied to application architecture,..."

    Gartner is generally credited with formalizing the definition of SOA first:

    "Service-oriented architecture (SOA) is a client/server software design approach in which an application consists of software services and software service consumers (also known as clients or service requesters).
    SOA differs from the more general client/server model in its definitive emphasis on loose coupling between software components, and in its use of separately standing interfaces. SOA principles are rendered during application design, development and deployment."

    SOA initially was an application architecture notion. It has since been broadened in scope (some would say the term has been hijacked).

    "I don’t see SOA as just a style, if scope isn’t involved then I’m totally missing the point. ..."

    That's why we're having this discussion. :-)

    "If it were just a style you can apply here and not there, "

    Exactly--I'd argue that 100% of the companies "doing" SOA are doing just that. They don't apply it everywhere. It's rather impractical, and as it happens, unnecessary.

    "...then you could have one application handily crafted in the SOA style and one in the N-Tier style next door, "

    Hmmm. SO solutions are often N-tier.

    "...but the connection between them isn’t addressed."

    SO solutions *must* somehow interact with non-SO components. Adaptive layers are typical.

    "But then I don’t think you would have an SOA, as I have come to understand it. As I have come to understand it, the term SOA applies to all participants in a given system if they are N-tier or anything else."

    This is why I say "SOA is not a discrete level of architecture." IMO, one should never say "we have an SOA." Rather, saying our *business architecture*, our *enterprise architecture*, our *integration architecture* (SOA does not eliminate the need for integration), and so on, are service oriented is more appropriate.

    Additionally, those architectures may be event driven, and implementations may be object oriented, etc. A meaningful, useful architecture will comprise more than just services and will employ more than just SO principles. Why refer to the architecture by just one of its characteristics?

    IMO, SOA does not infer a particular scope (there are those that disagree with me, like Steve Jones, Anne Thomas Manes and others). It is the architecture levels we already had, like BA, EA, AA, IA, etc. that sets the scope. SO is applied to those.
  • Nathan
    Rob, I'm not in much of a position to disagree with you practically, because as I've mentioned I have very little experience in this arena. Still, I would have a hard time saying that SOA isn't necessarily about technology - can you have a service that is purely human based, with no integration point with technology? I didn't so much mean it is technology like web services are a certain kind of technology, but at the end of the day your architecture will be manifested in technology if it is manifested at all. You can't apply SOA to bridges or football arenas, SOA is a technology architecture.

    In my mind, the city metaphor is not just "architecture in general", or "enterprise architecture in general" whereas SO is a particular of flavor architecture in general. The important part of the city metaphor for me is the autonomous nature of each level in the systems hierarchy and that each logical entity transacts with those around it through a globally standardized infrastructure and set of mandated conventions that permeate the whole system, and yet a particular unit of logic, be it a web service or a LOB application, is as N-tier as it cares to be on its own time. Traditional architecture or generalized EA doesn't mandate service autonomy or a common, enterprise wide infrastructure (or protocol), or centralized governance or loose coupling, but the city metaphor does imply those things, and from what i can tell those things are a pretty important part of most accounts of SOA I have seen.

    I can't even picture what SOA could possibly be about if it isn't about how units of business functionality as automated by software are expected to interact with one another. Loose coupling, share contract not class, all that jazz is all about defining the relationships between such units of business functionality, and it standardizes that realtionship to maximize certain qualities such as reuse or loose coupling, and a standardized method of interactions to me feels a lot like how autonomous humans are similarly enabled to transact with one another in very complicated ways via a common set of laws, conventions and standardized infrastructure that is our society.

    And I haven't really heard of SOA being applied to application architecture, except in the context of composite applications, so I can't speak to that, but I have a hard time picturing it. In any case I don't see SOA as just a style, if scope isn't involved then I'm totally missing the point. If it were just a style you can apply here and not there, then you could have one application handily crafted in the SOA style and one in the N-Tier style next door, but the connection between them isn't addressed. You could say to a visitor "Here we have our ERP system, it was built using the post-WS-* SOA style. And here we have our CRM, it was constructed in the JBOWS style. I don't recommend using that system at night, it isn't in the best neighborhood" But then I don't think you would have an SOA, as I have come to understand it. As I have come to understand it, the term SOA applies to all participants in a given system if they are N-tier or anything else.
  • Rob Eamon
    Joe McKendrick referenced your blog entry at http://blogs.zdnet.com/service-oriented/?p=1124

    I should've followed his link to here and commented, but instead I commented on McKendrick's blog at http://talkback.zdnet.com/5208-10536-0.html?for...

    Summary: I disagree with the notion that SOA is a "scope" thing.
  • Nathan
    @Sam, intent is much clearer. Thanks for the great series, BTW, very good info.
  • Nathan
    @Loraine, thanks for the links, I'll definitely check out those resources.
  • Also, this is a really great download on SOA testing, but I think it's also just a good read for getting into more of the nitty-gritty of SOA.
    http://www.ebizq.net/white_papers/8871.html
  • This cracked me up:

    "And then there is the ubiquitous prejudice (bordering on hatred) that SOA and its practitioners seem to universally hold against the poor beleaguered “Silo”. (Oh Silo, who weeps for thee?) "

    I basically read tons of stuff on integration - and so SOA as it relates to that - and then aggregate the content for an executive IT/business audience. I think a lot of the problem may be you're reading stuff that's more for CIOs than people actually wanting to build SOAs. And I agree, it's hard to get advice that moves from philosophical to implementation.

    ZapThink might have more useful information for you. There's also the Yahoo SOA group, but it tends to be very much about debating nuances.

    Nick Malik's Inside Architecture also is a good one for more hard-core SOA architecture info. (http://blogs.msdn.com/nickmalik/default.aspx)

    Best of luck. I loved this post!
  • Let me know what you think of the modifications I have made
  • Nathan
    @Pat, I agree, those tenets are important in defining, or at least implementing SOA. I would say they are probably a subset, though, the final list being different, possibly vastly so, from one school of thought to the next.
  • Thanks for the clarification and feedback
  • Nathan
    I don't actually feel marketed to - I feel educated by your posts and read them carefully, but the culmination ends up here, and it almost sounds like candy bar commercial

    Introduction to Neuron as WCF/SOA Enabler and "BizTalk and Neuron: Better Together"

    Neuron ESB and Publish-Subscribe, Mediation, Routing, etc.

    And I'm not dogmatic about N"open-source" by any stretch - I think Neuron is a top notch product, and from my very limited experience it has by far more fit and finish than any other ESB offering in the .NET space, at least from what I've been able to dig up.

    So I wasn't trying to be disparaging or negative, but your series of posts appears to be organized like a typical white paper where part 1 is the general educational material and part 2 is how the problem is solved by a product. I've learned extensively from white papers and never felt like the case study at the end detracted from the educational material within, yet promotion or evangelism of the product is still a goal. Perhaps my assumption may have been off base, but that's how it goes sometimes. I apologize if I offended, my tone was intended to be matter of fact without any implication of a sneer.
  • I will get to the four tenents in Episode 4 that I am currently writing as I agree Pat.
  • I see you are now changing what you wrote but what leads you to constitute that I am writing a "marketing serial." I am devoting dozens of hours to an ambitious task of trying to communicate a little about an area I know in contrast to areas I don't where I cannot communicate so well, like ASP.NET. Where do you feel like you are being "marketed" to? The fact that I may mention, dare forebid, a product as an example and it doesn't start with an "N?" Blasphemy!!
  • To me, the four tenets of SOA (as defined by Don Box in 2004) are an important part of the definition of SOA, although they might be somewhat outdated at this point. They are as follows:

    Boundaries are explicit
    Services are autonomous
    Services share schema and contract, not class
    Service compatibility is determined based on policy
blog comments powered by Disqus