1. A method of deploying an application having multiple application components, the method comprising: generating a topology of virtual computing resources and application components executing thereon for supporting execution of the application; defining one or more dependencies between the application components in the topology; and deploying the application in a cloud environment by provisioning cloud computing resources and installing the application components in the cloud computing resources according to the topology.