For a truly agile infrastructure, virtualization must enable IT to spread an application across multiple servers, not just split a single server into several VMs. This is an even tougher nut to crack than standard server virtualization, however, because most apps today are fairly linear and can't easily separate their processing into multiple parallel operations. Developers are working to make apps parallel for multicore CPUs, but clustered servers pose additional bandwidth and latency challenges. For example, multiple cores within a single server can communicate with one another quickly and access common memory, but multiple servers in a cluster need to rely on networks, which are much slower.
For this reason, most approaches to clustered Web services don't try to break services into parallel chunks. Instead, application fabrics from vendors like Appistry and DataSynapse install an app on multiple servers and load-balance across them. This works well for most SOA traffic, as Web services usually involve responding to multiple user requests, which can easily be spread across several servers.
For flexibility, all applications need to be installed on every server in the cluster, though in a large cluster with multiple apps they won't all be running at all times. Fabric management software can then adjust the capacity of each server automatically, based on both demand and parameters set by the network administrator. Rather than a separate layer, like a hypervisor, management software runs alongside apps, so it needs to be written to support each platform or operating system on which it will run.
In addition to IBM's WebSphere XD, two startups have launched fabric products. DataSynapse's FabricServer works with most Microsoft and Java applications, with support for in-house apps via common Java VMs and Microsoft's .Net. The product also works with VMware, enabling it to simulate true hypervisor-based virtualization across multiple servers. In this case, the hypervisor and each OS image would need to be installed on every server, with the DataSynapse software splitting capacity among operating systems the same way it does among applications.
Competitor Appistry supports applications written to most common Java and .Net VMs as well as Spring, a popular open source Java framework. Its EAF software also gives Java and .Net apps an optional clustering API, letting them access the fabric's features directly.
For now, fabrics look like a good choice for enterprises that need to scale applications out. But even fabrics don't tie into SOA management and registries, instead relying on their own load-balancing algorithms to allocate capacity. Software licensing also could get expensive, as every OS or application platform will need to be licensed for every server on which it may run.
For organizations looking to implement SOA and virtualization in a way that makes them as compatible as possible, for now we recommend following SOA's own design philosophy of loose coupling. With no standards for running Web services in virtual machines, and even proprietary systems still immature, these two seem poised for a long courtship. But keep an eye on developments so you'll be ready to jump in when the relationship is finally consummated.