As the world becomes more interconnected, there is an increasingly important role for distributed computer system. Designing these systems is not an easy task. Progress has been made in this regard with the development of formal specification languages and verification tools. One area that is usually not addressed is the deployment of a system. This is unfortunate as the deployment can be critical to the performance. Placing components on slow, unreliable hosts will severely hinder the system, while grouping components on the fastest hosts creates single points of failure.