With the expanded use of the Internet, web services are becoming more complex and more prevalent. For example, a web service hosted by a bank may allow users to access their accounts and perform banking transactions. Retailers may host web services to allow their customers to purchase items electronically. More generally, web services allow users to engage in a wide range of transactions using the Internet.
Developing software for such web services poses a particular challenge because the software is frequently implemented as multiple components that are deployed on multiple servers via different packages. For example, a web service may contain a front end tier that provides an interface allowing multiple users to access the service. The front end tier may interface to a middle tier, which may in turn interface to a database or other back end tier. Conventional service architectures may include two, three or four tiers, each of which may be implemented as multiple packages. Each tier may implemented by deploying the packages on one or more servers.
Each package may be developed by a different development team. For testing, each package is initially tested in isolation. The packages are then integrated and deployed in a test environment configured to provide test results that accurately predict operation of the packages together when they are deployed in a production environment. To support integration testing, an organization developing web applications may have a server farm containing numerous servers. The servers in the farm can be configured to provide the same configuration of servers that will exist in the production environment.
As revisions are made to packages, a new build of the web service is created and again deployed in the server farm for further testing and debugging. This process may be repeated iteratively until the software is ready for deployment in a production environment.