Alfred Hitchcock promoted one of his movies with the slogan, “The Birds is coming.” He got tremendous free publicity through debates about his grammar. Pedestrian grammarians complained about the lack of agreement between subject (birds) and verb (is). The more insightful recognized that The Birds was a movie title, and therefore singular.
So what should we make of “web services.” Is it singular — the name of an architecture — or plural? Let’s use the phrase in some sentences and see how it comes out. So …
What is “web services”? The core concept is that you’ll build applications out of pre-built components scattered about the web using standard protocols that enable runtime binding. According to its advocates, the result(s) will be dramatic reductions in development time and orders-of-magnitude improvements in quality.
Unfortunately, web services contains huge, fundamental flaws. While not insurmountable, they’re not easily solved. Neal Goldman of the Yankee Group brought one to my attention: Version control.
Imagine your company uses a web-services application, and the provider of a key component changes its behavior. The new component runs fine, of course — that’s built into the protocols — but sadly, it no longer does what you expect it to do. So surprise! Payroll tax withholding suddenly changes, and there’s nothing you can do about it — you don’t control the code and you don’t control the versioning, either. It’s like DLL hell, only the application doesn’t crash. You just wish it had, instead of creating business chaos by doing the wrong thing.
A second big problem is latency. When you run an application on your own computers, components communicate with latencies measured in microseconds. With web services they communicate across the Internet, which means latencies measured in tens, hundreds, or even thousands of milliseconds. Do you seriously think you can solve this with service level agreements? Me neither. Imagine a component that computes daily interest for a million customers. Even an excellent service level — 10 msec — adds nearly 3 hours just from Internet latency. That’s a lot of run time to add for just one component … and your entire application is built out of components like this. Web services could easily change overnight batch to over-year batch.
You might think you can solve this through the miracle of caching. Maybe you can … but next week we’ll see how a third major, entirely non-technical issue with web services could eliminate caching as an option.