1. A computer-implemented method for setting up a cloud application in a heterogeneous distributed cloud provider environment including multiple computer systems, the computer systems being operated by different cloud providers, the method comprising: defining the cloud application in terms of constituent nodes, each said node representing a part thereof that is to be deployed into a single one of said computer systems that satisfies deployment requirements of that node; defining properties identifying deployment requirements of, and application level instantiation logic for, each said node; exposing, for each said node, any interfaces that are invokable by one or more other nodes; identifying, for each said node, any interfaces that it will invoke on one or more other nodes; and matching exposed interfaces and complementary invokable interfaces.