This is a single archived entry from Stefan Tilkov’s blog. For more up-to-date content, check out my author page at INNOQ, which has more information about me and also contains a list of published talks, podcasts, and articles. Or you can check out the full archive.

Architects and Technology

Stefan Tilkov,

Sam Ruby’s recent post has made me think some more. I’ve wondered for a while why my reaction is so negative when someone emphasizes that SOA is just an architectural concept, and Web services just one possible implementation strategy, with REST, CORBA, RMI, JINI etc. as alternatives [1].

It’s not that I’m a big fan of Web services — I used to be, but would today rather choose a REST-based approach if given the choice. So why do I find myself defending Web services as the natural implementation choice when people claim SOA is independent of any technology?

I believe the real reason is that I’m getting more and more annoyed with the fact that technology is somehow deemed unimportant — too unimportant for high-level architects to waste their time on. But I fundamentally disagree. Obviously, there are SOA-related issues that you can talk about without caring about the underlying technology — for example, questions of organizational responsibility, incentives for providing or consuming services, a general strategy with regards to vendors (single-vendor or best-of-breed), etc.

But it makes a really big difference whether you build your SOA on Web services, CORBA, or REST; enough of a difference that it may result in millions of <insert currency of choice> loss or profit. It’s also extremely hard to have a meaningful technical discussion, even one of a high-level nature, when you have not yet defined your technical terms. And doing that is significantly harder when you decide to “abstract away” the differences of the technology used [2]. Of course you can talk about “information being exchanged”, but it makes a difference whether you exchange objects or XML documents.

Of course technology is not a solution in itself, and of course there’s a lot of merit in standardizing on basically anything instead of having to support a huge number of different protocols, formats, and incompatible middleware products. But CORBA, J2EE, REST and WS-* differ a lot and it’s dumb to ignore this.

I vote for allowing terms like HTTP, XML, and Web services to enter into high-level architectural discussions.

Footnotes:

[1] There is hardly a talk on SOA at any German conference that does not emphasize this — usually in a style that suggests the presenter is an underdog for making this claim.

[2] Just take a look at the OASIS SOA reference model for what you get when you try to remain too abstract.