We develop a framework for asymptotic optimization of a queueing system. The motivation is the staffing problem of large call centers, which we have modeled as M/M/N queues with N, the numberof agents, being large. Within our framework, we determine the asymptotically optimal staffing level N* that trades off agents' costs with service quality: the higher the latter, the more expensive is the former. As an alternative to this optimization, we also develop a constraint satisfaction approach where one chooses the least N* that adheres to a given constraint on waiting cost. Either way, the analysis gives rise to three regimes of operation: quality-driven, where the focus is on service quality; efficiency-driven, which emphasizes agents' costs; and a rationalized regime that balances, and in fact unifies, the other two. Numerical experiments reveal remarkable accuracy of our asymptotic approximations: over a wide range of parameters, from the very small to the extremely large, N* is exactly optimal, or it is accurate to within a single agent. We demonstrate the utility of our approach by revisiting the square-root safety staffing principle, which is a long-existing rule of thumb for staffing the M/M/N queue. In its simplest form, our rule is as follows: if c is the hourly cost of an agent, and a is the hourly cost of customers' delay, then N* = R + y* (a/c)y√R, where R is the offered load, and y*(·) is a function that is easily computable.