1. A system for managing a plurality of applications in a shared computing environment, each application comprising a plurality of application components, the system comprising: a) an application manager operable to receive or define a service specification for a first application that defines a set of required computing resources that are necessary to run each application component of the first application; and b) a resource supply manager in communication with the application manager and operable to manage the supply of a plurality of computing resources in the shared computing environment; wherein the application manager is operable to request the set of required computing resources from the computing resource supply manager, and wherein the resource supply manager determines the availability of the required computing resources within the shared computing environment according to resource allocation policies and provides allocated computing resources to the application manager, thereby allowing each application component of the first application to be run on the allocated computing resources.