1. A system for deploying and managing software services, comprising: a computing environment that includes a plurality of machines, which are organized into resource pools, wherein each of the resource pools includes a collection of virtualized resources; a plurality of software services, wherein each of the plurality of software services includes one or more software applications which are manageable as a unit and deployable to one of the resource pools; a plurality of agents, wherein each of the plurality of agents resides on one of the plurality of the machines, manages the software applications and resources on the one of the plurality of machines, and exposes the resources to the resource pools for use by the computing environment; a system controller that communicates with the plurality of agents to determine resources available on the machines and to select a resource pool for deploying a software service, based on one or more of remaining capacity of the resource pool, dependencies of the software service, a service level agreement (SLA) of software services already deployed on the resource pool, and a priority for the software service; and a rules engine that compares administrator defined constraints with runtime metrics, and generates events when a said constraint is violated by a said runtime metric.