Server farms are ubiquitous in applications ranging from Web server farms to high-performance supercomputing systems to call centers. The popularity of the server farm architecture is understandable, as it allows for increased performance, while being cost-effective and easily scalable, allowing applications to meet response time goals and power goals. Given the prevalence of server farms, it is surprising that even at this late date so little is understood with respect to designing policies for resource management in multi-server systems. In this talk we address the following design questions: ** What are good policies for routing/dispatching jobs to hosts in a server farm? ** How should jobs be scheduled at the individual hosts? ** How can we choose policies to combat job size variability? ** What are the tradeoffs between response time and fairness goals? ** How can policies simultaneously meet response time goals and energy goals for a server farm? There are at least three distinct communities studying scheduling in server farms from an analytical perspective. These include the SIGMETRICS community, the INFORMS community, and the SPAA/STOC/FOCS community, all of which have different approaches and goals. One of our goals in this tutorial is to make researchers aware of results in these different communities. The emphasis will be on intuition, so that the talk is accessible to newcomers as well as old-timers. In surveying the newest results, we will also present some practical open problems.