In this paper we describe a utility computing framework, consisting of a component model, a methodology, and a set of tools and common services for building utility computing systems. This framework facilitates the creation of new utility computing systems by providing a set of common functions, as well as a set of standard interfaces for those components that are specialized. It also provides a methodology and tools to assemble and re-use resource provisioning and management functions used to support new services with possibly different requirements. We demonstrate the benefits of the framework by describing two sample systems: a life-science utility computing service designed and implemented using the framework, and an on-line gaming utility computing service designed in compliance with the framework.We describe in this paper a utility computing framework (framework, for short) that consists of a component model, a methodology, and a set of tools and common services for building utility computing systems. A utility computing system (also referred to as a utility system, or simply a utility) is a system that can automatically create and manage multiple utility computing services (utilities services, for short) on a shared infrastructure. The infrastructure consists of pools of hardware resources, such as servers, storage, and network appliances, as well as software resources, such as operating systems, middleware, and applications. The utility services that can be created are not limited to a specific domain, and may range from e-commerce services, to scientific applications, to on-line gaming. A utility system ensures the smooth operation of the supported services by dynamically adjusting the allocation of resources. If the total demand for services exceeds the capacity of available resources, the utility system may dynamically procure and configure additional resources in order to support service level commitments. The utility system makes resource allocation and configuration decisions based on factors such as performance monitoring, SLA (service level agreement) goals, business objectives, or human interaction.Utility computing systems differ in the types of resources used, the topology of the network connecting these resources, the services offered, and the business and operational constraints that govern their operations. Figure 1 shows two examples of utility systems. Utility system 1 offers and manages services that perform scientific computations and queries. Instances of services, such as the protein folding service, are illustrated at the upper tier in Figure 1. Utility system 1 uses an infrastructure that includes IBM eServer* zSeries* servers, an Oracle** database, a SAN-(storage area network) based storage system, and a scientific application (these are shown at the bottom tier in Figure 1). Utility system 2 offers ecommerce services and on-line gaming services. It uses Intel** servers, an IBM DB2 Universal Database*, IBM WebSphere* application servers (WAS), and a NAS (network-attached storage) co...