Tonight's AJUG meeting covered web services within the broader context of service-oriented architecture (SOA). While SOA can certainly have something other than web services involved, the focus of the discussion was web services, since that's been a hot topic for a while. The more I hear about web services, the more reservation I have about a wholesale embrace of them. They are certainly not the panacea for technological integration ills (and consultant salary ills) that so much marketing hypes them to be.
So, what's my big hangup with web services? XML versus a binary protocol, that's what. In every presentation on web services that I have attended in the last two years, I have heard reference to Moore's Law. The presenter makes reference to Moore's Law because invariably someone like myself asks the question, "so what kind of impact does the use of human-readable XML instead of a binary protocol have?" The presenter usually states that the overhead can be 2 to 3 times that of a comparable transaction using a binary protocol. But, according to the presenter, that's irrelevant, because with Moore's law the power of machines will double shortly and the overhead will be imperceivable.
Whew, that's a relief. Well, not really.
Moore's law doesn't apply to existing hardware, and it's not directly tied to hardware refresh cycles within most shops. So, for the hardware you have right now, running the solutions architecture you have right now, expect performance to take a 50-66% hit, if the resource requirements jump by a factor of 2 or 3. That should give anyone pause and cause a shop to really ask themselves why they are considering adoption of web services.
The central thrust of web services is ease of integration across various platforms. So, if you don't need to allow other new platforms to access your back end applications, web services will cut your performance significantly for no added value. It will also require a considerable revamping of your systems architecture.
Web services definitely have their place within the enterprise; I can even think of a few areas where it would be great to have at my current job. I just don't think it fits everywhere. If you don't need to integrate with other systems beyond what is in use now, why take the performance hit?
I think the days of massive cash outlays on the possibility that you might need a given technology at some point down the road are over. The belts have been tightened for some time now. Even with the economy picking up, I doubt it will ever return to that venture capital feeding frenzy of the late nineties. I also think that is a good thing.
So, as a developer or architect, don't get too rabid on web services as the de facto "way to go". You may find yourself with a hard sell on your hands. If you can sell it, be darn sure that the return on investment is pretty concrete before putting your professional opinion at risk.