Internet usage has exploded over the past several years and continues to grow.  People have become very comfortable with many services offered on the World Wide Web (or simply “Web”), such as electronic mail, online shopping, gathering news and information, listening to music, viewing video clips, looking for jobs, and so forth.  To keep pace with the growing demand for Internet-based services, there has been tremendous growth in the computer systems dedicated to hosting Websites, providing backend services for those sites, and storing data associated with the sites. 
One type of distributed computer system is a data center (such as an Internet data center (IDC) or an Enterprise Data Center (EDC)), which is a specifically designed complex that houses many computers for hosting network-based services.  Data centers, which may also go by the names of “Webfarms” or “server farms”, typically house hundreds to thousands of computers in climate-controlled, physically secure buildings.  Data centers typically provide reliable Internet access, reliable power supplies, and a secure operating environment. 
Today, large data centers are complex and often called upon to host multiple applications.  For instance, some websites may operate several thousand computers, and host many distributed applications.  These distributed applications often have complex networking requirements that require operators to physically connect computers to certain network switches, as well as manually arrange the wiring configurations within the data center to support the complex applications.  As a result, this task of building physical network topologies to conform to the application requirements can be a cumbersome, time consuming process that is prone to human error.  Accordingly, there is a need for improved techniques for designing and deploying distributed applications onto the physical computing system.