The flurry of recent discussion about a couple of buzzterms -- enterprise service bus (ESB) and service-oriented architecture (SOA) -- is nicely summed up by Phil Wainewright. Not being knee-deep in the politics of all this, I'll just watch from the sidelines as people wrangle about what "open" and "proprietary" might mean in these contexts. But there's a piece of the discussion I'd like to lift out and examine, and it comes from a Microsoft Indigo guy, Rich Turner:
To my mind, an ESB is smart-plumbing to which to attach dumb nodes...The WS route makes the nodes themselves smart, reducing the need for underlying smart-plumbing, and ensuring open communications across any platform and device. [On the road to Indigo: To ESB or not to ESB]
This invocation of the end-to-end (aka stupid network) principle surprised me. I hadn't thought of end-to-end-ness and stupid networking as SOA-vs-ESB differentiators, and I'm not sure I buy the distinction. Sonic Software's Java- and Java Message Service-oriented stuff predates the WS-* stack, and doesn't reach out to the broad population of network nodes. But as Dave Chappell points out, nothing preclude WS-* support. And while the approach does create a smart network, I'm not sure that ESBs generally preclude smart nodes either.
From the other perspective, Indigo doesn't itself create a smart network, and it does empower smart nodes. But that's what you'd expect given Microsoft's control of the millions of desktops to which it hopes to deploy Indigo. Will smart networks be built on top of Indigo? You can be sure of it.
Let's say for the sake of argument that ESB is a first draft of SOA, and that the inexorable trend is toward the language- and platform-neutral wire protocols we call WS-*. (And let's set aside the WS-* backlash for the moment.) Does SOA imply stupid networks and smart nodes, and is it a critique of smart networks and dumb nodes?
Taking this a step further, are smart networks are always a dumb idea? I suspect that this is yet another of the false dichotomies that afflict our industry. As always, more nuance is needed. For example, I've often noted that pervasive intermediation is one of the key opportunities created by SOA. Messages flowing through a SOA fabric (to use another loaded term) are open to inspection, auditing, policy enforcement, and behavior-enhancing transformation. As a result, we can start to hoist some of this hard-coded stuff out of applications and up into the network -- yet another loaded term in this context.
The first generation of these networks to emerge are overlay networks. They may use open WS-* protocols, but their mechanisms for defining contracts and for doing intermediation are proprietary. If this approach pans out, we'll presumably iron out those proprietary aspects in yet another layer of standards. But at the end of the day, aren't we talking about putting smarts into the network?
I doubt that the smart-networks-and-dumb-nodes versus dumb-networks-and-smart-nodes dichotomy says anything useful about ESB and SOA. More broadly, it doesn't help us think about how we'll distribute intelligence as between networks and nodes. They'll be smart in some ways, and dumb in other ways. The trick will be to use both styles in the right ways.
Former URL: http://weblog.infoworld.com/udell/2005/05/03.html#a1226