One of the biggest issues I’ve yet to get across to my colleagues is how in massively multiple systems (like Private Planet) you cannot think of the system as a collection of discrete components. You have to realise these all interact in complex ways. How the client talks to the server can deeply affect how the server performs. The protocol stacks use to carry messages are not just a minor component they have deep and widespread impact on both how the server and client works. How the server makes database queries will affect its design and reliability.
And unless you have a bottomless pit of money to spend on your server you need to get the overall design right for your client-server application right. Failure to do so can result in the server being swamped with work unnecessarily.