Glue, Gaia, and the services grid
Graham Glass, the wizard behind The Mind Electric, is "100% sure" that grid computing is the future. To prepare for it he's building Gaia, which in its first incarnation will be used to do simple, lightweight clustering and load-balancing of web services. Those services, initially, will be Java-based and written in TME's SOAP toolkit, Glue, but Graham's working on .NET bindings as well.
As with Glue, Gaia requires just a line or two of Java to publish, or subscribe to, a service. The only difference that the programmer can see, with Gaia, is that the SOAP server doesn't bind to a port, and neither does the SOAP client. The server publishes a named interface; the client asks to bind to it; Gaia makes the connection. If multiple instances are running, work is distributed among them. If an instance dies, failover is automatic. When new servers come up, clients note their arrival, so if they need to fail over no search is needed.
Graham demoed Gaia for me today on the show floor at the Javits Center. As every user of Glue knows, Graham is more than a brilliant software engineer. He has an even rarer talent for simplicity. In Glue, as Larry Wall says of Perl, "easy things are easy, and hard things are possible." That's why I think of Glue as the SOAP::Lite of Java. The easy thing that Glue makes easy is the basic web services stack. The hard thing that Gaia makes possible is a grid fabric which, though intended first for web services, has more general possibilities.
Here's what I like most about Graham. I asked him how two Gaia namespaces would federate. "I don't know," he said candidly, "but I've learned that when the time comes to do it, I'll figure it out." Good answer! An Internet-scale grid OS is going to have to be bootstrapped like the web itself was. A peer-to-peer clustering fabric for web services, done in a style that's closer to SOAP::Lite than J2EE, is the kind of approach that could light the fire.