Queuing Theory: From Markov Chains to Multi-server Systems