You can parallelize I/O with more servers. They split their one big data set into multiple small data sets in many more cheap boxes. These boxes may be 1/10th of the I/O performance of the beefy one but there are less contention, more fault tolerant, and more scalable while having the same overall performance. And it seemed they found it cheaper as well.
We have a common communication interface (swagger) and have developed websocket-based communication between servers using the Atmosphere framework. Yes, HTTP overhead isn't trivial for chatty server communication. Sockets solve that