To ESB or not to ESB
There is a discussion raging right now about the notion, value and applicability of an Enterprise Service Bus, or ESB. David Chappell of Sonic Software has written a good, albeit very Java centric book on ESB which I guess not surprisingly leans heavily towards discussing the notion of ESB from the context of the technologies available from Sonic and the Java platform. Sun has recently waded into the game by submitting the Java Business Integration (JBI) draft spec at the Java Community Process (JCP) site. JBI extends J2EE with the technologies necessary for building an ESB.
In the Microsoft world, technologies such as Microsoft BizTalk Server 2004, combined with Microsoft's .NET Frameworks provide most, if not all, of the features that are being proposed as required in order to build an ESB, but give you the ability to compose your system as you need.
I don't want to detract from this work or to get into a competitive slinging match, but I want to ask some questions to this audience:
- Does anyone out there want to build their Enterprise infrastructure on a technology from a single vendor, supporting a single platform?
- Does anyone out there see benefit from building their Enterprise upon a technology which is closed and proprietary
We are all - ALL of us - responsible for delivering to our customers the ability to integrate our systems with one another, to integrate the systems that our customers pay for and consume, that hold the data that our customers own. Customers are tired of not being able to integrate their systems without jumping through hoops. Why should our customers pay to purchase/license systems that claim to be there to make the customers' lives easier only to find that the systems are opaque and cannot interop with other systems in their environment. This is lunacy and it has to end.
We as technology providers have a responsibility to make our systems interoperable by design. To share a common lingua-franca on the wire. To interop cleanly, securely and reliably. We should not be attempting to do this at the API layer. We should not be trying to achieve this at the technology layer. The ONLY way we're going to achieve broad and true integration and interoperability is by standardizing the wire protocols that we use to enable systems to communicate.
To this end, we, along with many of our partners, competitors and other interested parties formed and work within the Web Services Interop (www.ws-i.org) organization to ensure broad interoperability between our technologies. At long last, our industry is finally growing up and is designing truly interoperable, open, composable wire-level protocols for building secure, reliable, transacted distributed systems.For the first time in this industry's history, we see all the major players sitting down to the table to agree on common wire protocols for the most common scnearios found when building distributed systems. This must continue - there is only upside here.
To which end, if we have wire protocols that permit, even enhance our ability to build truly interoperable distributed systems that communicate via secure and reliable communications infrastructure, and if each node in the system is able to use these technologies, then all nodes in a system should independently be secure and reliable.
What value, therefore, is an ESB? To my mind, an ESB is smart-plumbing to which to attach dumb nodes. To my mind, the ESB approach is less about providing customers with value and more about extending attempts to lock customers into a given platform. How, for example, would I add mainframe nodes, COM+ nodes, Web Service nodes etc. running on different platforms and technologies on top of JBI/Sonic/<enter ESB of choice here> without the use of adaptors and translators? And more importantly, if I chose to change vendors, how would I replace my ESB with that from someone else? Isn't it just crazy to even begin to countenance such an approach?
The WS route makes the nodes themselves smart, reducing the need for underlying smart-plumbing, and ensuring open communications across any platform and device.
Am I missing something here?