Virtualization vs. Web Services
I’m at CalTech listening to physicists talk about the software side of the new Spallation Neutron Source at Oak Ridge. One of their major headaches is the difficulty of deploying their code: a typical application has dozens of complicated modules, each with dozens or hundreds of dependencies. Their solution is to host a web service rather than try to deploy on end users’ machines, which has got me thinking: are web services and virtualization competing solutions for non-data-intensive applications? (Non-data-intensive because if your app needs to grind a few terabytes to produce an answer, you’re not shipping copies of it around.) Does anyone know of any studies/comparisons of the tradeoffs between “here’s the over-the-web API” and “here the VM”?
I think the web service route makes a lot of sense for this community because the raw data files are huge but the reduced data files are relatively small in many cases. Very interesting to hear they are going down this route at SNS. Trying to argue the case for this general approach in the UK at the moment.
I think it may depend on who the target audience is. If they are exposing a human-facing application, then the two solutions probably do compete. However, if they are exposing a computer-facing API and expecting humans to build applications on top of it, web services may help to solve a slightly different problem that VMs can’t. When you have a host of components written by many noncommunicating teams with various tools, exposing each as a web service can help put together components that can’t easily be built together any other way. I’ve seen a *lot* of scientific code that works well with only one particular version of a commercial FORTRAN compiler. If you have two such components depending on mutually incompatible things, assembling a build environment that can combine them might be difficult. Web services help you work around this problem by using HTTP as a glue between different environments.
But I’ve long been a fan of the VM approach to deployment. I am a lazy programmer that’s wasted far too much time on build issues and chasing down platform-specific bugs in ostensibly cross-platform GUI toolkits.