An architecture of a hosting system is presented, where a number of servers are used to provide different types of web services to paying customers. There are charges for running jobs and penalties for failing to meet agreed Qualityof-Service requirements. The objective is to maximize the total average revenue per unit time. Dynamic policies for making server allocation and job admission decisions are introduced and evaluated. The results of several experiments with a real implementation of the architecture are described.