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 application nodes, each said application node representing a part of the cloud application that is to be deployed into a single one of said computer systems in the heterogeneous distributed cloud provider environment that satisfies deployment requirements of that application node; defining properties identifying deployment requirements of, and application level instantiation logic for, each said application node; exposing, for each said application node, any interfaces that are invokable by one or more other application nodes; identifying, for each said application node, any interfaces that it will invoke on one or more other application nodes; and matching exposed interfaces and complementary invokable interfaces so as to enable communications to take place between the respective nodes via the matched interfaces.