Designing server architecture to support multiple applications can be a very tricky and intimidating task to take on. So many different things need to be considered when designing your first initial implementation that often times engineers will find themselves over engineering an achitecture all at once instead of building for their immediate needs and planning to scale over a period of time.