1. A method of determining a placement of services of a distributed application onto nodes of a distributed resource infrastructure comprising the steps of: forming communication constraints between node pairs which ensure that a sum of transport demands between a particular node pair does not exceed a transport capacity between the particular node pair, each term of the sum comprising a product of a first placement variable, a second placement variable, and the transport demand between the services associated with the first and second placement variables; forming an objective; and employing a local search solution to solve an integer program comprising the communication constraints and the objective, which determines the placement of the services onto the nodes.