Re: [service-orientated-architecture] SOA and ESBs
First, let's establish your meaning of the term "ESB". I assume that you are talking about a product. Examples include BEA AquaLogic SB, Cape Clear ESB, Fiorano ESB, IBM WebSphere ESB, IBM WebSphere Process Server, IBM WebSphere Message Broker, IONA Artix, Oracle ESB, Software AG crossvision, Sonic ESB, Tibco BusinessWorks, and webMethodsFabric. Also, open source projects: ServiceMix, Mule, Celtix, etc.You are not referring to what IBM first termed "an architectural pattern". And you are not referring to a multi-product services infrastructure organizations build to support SOA initiatives.
I do not believe that an ESB is an essential component of SOA. When it comes right down to it, you don't need any new products to do SOA. After all, SOA is about design, not technology. Nonetheless, products can be very useful, and I recommend buying at least a few basic components to get started.
The vendor hype surrounding ESBs has been very effective -- you'd be amazed how many requests I get from my clients for help selecting an ESB. But then, organizations frequently want a quick-fix solution. The vendors (and many analysts) are telling them that an ESB is all you need to get "instant SOA", or at the very least, that its an essential component.
But an ESB is not on my list if the few "basic components" that I recommend for getting started with SOA. In fact, I discourage people from starting with an ESB. An ESB does not encourage good SOA behavior. ESBs are essentially integration systems, not SOA systems. SOA is about tearing down application silos, but integration systems reinforce those silos.
In my book, the basic components include:
one or more service platforms (e.g., .NET, a Java EE app server, etc.)
a SOA management solution (e.g., AmberPoint, Actional, SOA Software)
a registry (
e.g., Systinet, Infravio)
an XML gateway if services will be exposed outside the firewall (e.g., IBM DataPower, Reactivity, Forum, Layer 7)
As you say, an ESB is especially good for bridging to legacy applications, and therefore it is a useful component in a services infrastructure. Many ESBs also support reliable messaging, asynchronous messaging, and pub/sub exchange patterns. These capabilities can also be pretty useful--but probably not in the initial stages of a SOA project. (Every organization has lots of projects to choose from that don't require these capabilities.) At a later stage in a SOA project, you might also want an orchestration engine, and most ESBs supply one--but that definitely isn't where an organization should start a SOA initiative. All of these capabilities are things that you don't need when first getting started. Therefore an ESB should be a later-stage purchase.
I also definitely don't recommend using an ESB as a central hub for all SOA traffic. You and I had a private discussion a couple of days ago wherein I suggested that all important message traffic should be mediated -- but it should not be mediated by an ESB. It should be mediated by XML gateways and/or SOA management agents. A mediation system should do ALL of the following
virtualization of endpoints (enabling dynamic location, binding, routing, versioning, etc)
transformations
security mediation and enforcement of security policies
monitoring, management, and control
An ESB can only handle the first two. XML gateways and SOA management agents can do all four. My preference for a mediation system is an XML gateway because it offers the added value of hardware acceleration. Although I recommend XML gateways as a basic component only when exposing services outside the firewall, that's only when discussing the initial configuration. When first getting started, I think SOA management is a more important infrastructure component, because you need the monitoring and visibility features that only a SOA management system offers. But as the SOA initiative progresses, I recommend using an XML gateway for mediation between services inside the firewall. (You'll still need SOA management to implement endpoint-based policy enforcement points, but XML gateways make better mediators.)
Regarding this point:
The main drawback I see to using an ESB is that you're building your
enterprise around proprietary software. Even the open source ESBs all
have their own unique ways of configuring and managing services. The net
effect is that you're locked into a particular service bus and will find
it increasingly difficult to break free over time.
The same can be said about all SOA infrastructure products. Lock-in is a fact of life. As soon as you implement anything, you're locking yourself into a product. I think it's better to lock yourself into a single product for configuration and management than to deal with dozens of different tools and procedures for configuration and management. That's the primary reason that I recommend using a SOA management system to implement endpoint policy enforcement points rather than using the inherent capabilities of a service platform. Centralized management and control is a good thing. The one caveat is that many ESBs are built on a proprietary MOM protocol, and you definitely need to be cautious about using proprietary protocols. Not only do they lock in the product for that specific service, they also force symmetric deployment of the proprietary protocol. Try to avoid using them.
I'd like to find out how list members view the use of ESBs in SOA. Based
on what I've read and discussions I've had off list, I suspect a fair
number of people view an ESB as an essential component of a SOA.
In my own talks on the topic I tell people that ESBs are especially good
for bridging legacy applications to a SOA. Beyond this, they can
certainly add a lot of value in the monitoring and control area.
However, I think there's been way too much marketing hype from the
vendors that conflates ESBs with SOA. Especially now that WS-Addressing,
WS-ReliableMessaging, and WS-AtomicTransactions are becoming standard
components of the SOAP stacks (and WS-Eventing is getting closer), the
value added to Web services by an ESB seems to me to be minimal for all
but the largest enterprises.
The main drawback I see to using an ESB is that you're building your
enterprise around proprietary software. Even the open source ESBs all
have their own unique ways of configuring and managing services. The net
effect is that you're locked into a particular service bus and will find
it increasingly difficult to break free over time.
In the presentation I gave at Catalyst two weeks ago, I spoke to this. Step one is to understand the capabilities you need in the middle. Now the question is...
First, let's establish your meaning of the term "ESB". I assume that you are talking about a product. Examples include BEA AquaLogic SB, Cape Clear ESB, ...
Anne, Generally agreed, but three points of disagreement: 1. I think to say " An ESB does not encourage good SOA behavior. ESBs are essentially integration...
Stu, Regarding your points of disagreement: 1. I think to say " An ESB does not encourage good SOAbehavior. ESBs are essentially integration systems, not SOA...
Anne, Firstly, to be clear, even though I speak for myself and not BEA in this discussion, I am interested in promoting our view of the ESB space. I'm a ...
I apologize to the list for give BEA this opportunity to soap-box. Regarding this comment: I don't look at it this way -- i would suggest perhaps that most...
As usual, Anne, no apology is due from you. What Stuart wrote was a little close to billboarding (one of the heinous crimes according to this Group's penal...
Gervas, As I was writing it I recognized we were getting close to being a feature dissertation, but I felt I had to get concrete. I'll avoid such shoot-outs...
One small reply to a question in here about ESBs that federate security, to say that IONA's Artix does. We have a good example in production that federates...
Sonic's ESB also provides a federated security model. In fact, a good criteria for any ESB should be that it supports the notion of a distributed/federated...
... You're correct on this, and it's unfortunate. Part of the problem is technology silos. Network and security engineers are much more comfortable with the...
Thanks for everyone's replies on this topic, and especially to Anne for her detailed discussion of the issues. I've got a few comments and questions inline. -...
Dennis, You and I probably travel in different circles. My clients are the Fortune 500, so most of my recommendations are aimed at this type of client. You...
... Absolutely true on the different circles point. The last Fortune 500 client I had (nameless, by contract terms) was such a pain that I regretted taking...
... Disagree on this point. Don't think it is the size of the enterprise but whether whether one takes a Developer-centric or Operational-centric view of your...
... I don't think you're missing anything here. I came to a similar conclusion some time ago, and I think the vendors did as well. That's why all the products...
... How about the scenario where you are trying to build a Service that satisfies complies with a SLA. The Service is built from registered service elements...
... I agree that this would be a compelling use case for UDDI. Is anyone actually doing this, even in the Fortune 500 market? For that matter, is the whole...
Hi I've been following this thread with some interest, as I've worked for a number of vendors with ESB offerings. <your comments> The main drawback I see to...
... Actually, this was Dennis's comment ... My comment in response to Dennis's comment was: <ATM> The same can be said about all SOA infrastructure products. ...
... Ok, the assumtion is the "foresee" word. ... Within reason. If the J2EE interfaces are exclusively used then I would argue that the lock in story is not...
I am a little bit disagree with Dennis about ESB being "an essential component of a SOA". I do not want to couple SOA with a tool, which ESB is today. However,...
... Humm, so your SOA doesn't run on a network? Every piece of networking equipment you have is an ESB. The IP routers provide routing based on destination....
Anne has given a very comprehensive answer. There's not much to add except to say that from the IONA point of view, we feel that what seems to be the dominant...
Hi, ESB is an implementation detail that is quite unimportant. The main trap is that it can easily mislead you from the most important questions like what ...
The way I view it: - an ESB is an optional decentralized proxy service - it can monitor or enhance a service’s capabilities without requiring modification to...
Stu, You are making an argument for medaition systems. I'm just pointing out that ESBs aren't the only type of mediation system out there. I can do all these ...