I subtitle this blog entry "why 90% of mashups use mapping"...
There's been a lot of talk recently about Web 2.0 and how it might apply in enterprises (and, as a result, how it overlaps with SOA). I'm a big believer in simplicity and agility, and so I like a lot of the Web 2.0 concepts. But I think most people are underestimating what it will take to adopt technologies like mashups in an enterprise setting.
The nice thing about mashing up with mapping is that addresses are universally understood. Everyone knows how to talk about addresses in a meaningful way. Similarly (at least in the US), everyone knows how to talk about social security numbers and we'd have a lot more services that used them if it weren't for that darned privacy issue (of course, there's always my morbid favorite SSN-based service - I haven't seen any mashup of this one with maps yet though).
The issue I'm talking about here is semantics. Addresses and SSNs are semantically well defined things, so it's pretty easy to do mashups with them, because every application (for the most part) understands what to make of them. The problem is that, in the enterprise, semantic equivalence is usually hard to come by. Want to mashup "customer purchases" with "billing records"? Too bad, because these systems most likely represent "customer" in entirely different ways. "What?", you ask, "customer" isn't a universally equivalent concept in applications? Welcome to the typical enterprise!
You can always hack something up to map one type of customer to another (maybe another Web service that maps the key IDs from billing to ordering). The first time you do this, it's not so bad. But the second, third, ... and 50th time it starts to resemble the spaghetti that has been hobbling enterprises for years.
SOA is definitely growing. But, when people ask why SOA hasn't yet universally taken off "enterprise wide", semantics are one of the answers. Companies don't today have a common model to represent things like "customer" - and for many large enterprises the politics of even trying to define this are virtually unmanageable. Semantics limit the growth curve of "enterprise-wide SOA" (SOA is, more often, growing project-by-project in enterprises) - and this is what will also limit the growth curve for mashups in the enterprise. Semantics are tough.
The good news is that addressing the semantic problem will kill two birds with one stone. It will unlock the enterprise potential of SOA and of mashups. How do you get started? One way it to start by just addressing equivalence (or, you might call it, key mapping). Think of it as developing a "Google for key IDs" that lets you look up key IDs for different systems based on other key IDs or based on information about the entity ("customer" for example). If you generalize this service, you won't end up with nearly the same level of spaghetti that you would normally end up with. Which is a good thing.