A Grid can be defined as a layer of networked services that allow users single sign-on access to a distributed collection of compute, data, and application resources. The Grid services allow the entire collection to be seen as a seamless information processing system that the user can access from any location. Unfortunately, for application developers, this Grid vision has been a rather elusive goal. The problem is that while there are several good frameworks for Grid architectures (Globus [1] and Legion/Avaki [18]), the task of application development and deployment has not become easier | 9 Grid Web services and application factories Dennis Gannon Rachana Ananthakrishnan Sriram Krishnan Madhusudhan Govindaraju Lavanya Ramakrishnan and Aleksander Slominski Indiana University Bloomington Indiana United States INTRODUCTION A Grid can be defined as a layer of networked services that allow users single sign-on access to a distributed collection of compute data and application resources. The Grid services allow the entire collection to be seen as a seamless information processing system that the user can access from any location. Unfortunately for application developers this Grid vision has been a rather elusive goal. The problem is that while there are several good frameworks for Grid architectures Globus 1 and Legion Avaki 18 the task of application development and deployment has not become easier. The heterogeneous nature of the underlying resources remains a significant barrier. Scientific applications often require extensive collections of libraries that are installed in different ways on different platforms. Moreover Unix-based default user environments vary radically between different users and even between the user s interactive environment and the default environment provided in a batch queue. Consequently it is almost impossible for one application developer to Grid Computing - Making the Global Infrastructure a Reality. Edited by F. Berman A. Hey and G. Fox 2003 John Wiley Sons Ltd ISBN 0-470-85319-0 252 DENNIS GANNON ETAL. hand an execution script and an executable object code to another user and to expect the second user to be able to successfully run the program on the same machine let alone a different machine on the Grid. The problem becomes even more complex when the application is a distributed computation that requires a user to successfully launch a heterogeneous collection of applications on remote resources. Failure is the norm and it can take days if not weeks to track down all the incorrectly set environment variables and path