Although it’s usually an easy solution to just throw hardware at a problem, sometimes proper software architectural designs would help reduce the need.
For example I would use an enterprise cache to offload a lot of work to smaller machines for readonly non-transactionally important data.
I would segregate document oriented data, large files vs tabular SQL data into different data stores (rather than dumping everything into one data store).
I clone / transform the data from real stores into archival / reporting stores that can get analyzed outside the system.
I do not store log files too long or at all on the servers instead pass it down the line to a log aggregator. Which in turn stores the data in another place that can be analyzed as well.
Analysis is done primarily on an enterprise search system such as elasticsearch which can scale up with large amounts of data.
Set up an enterprise service bus and focus more on asynchronous / non-blocking processing of events to allow it to scale better and have a single contact point for all the applications. If needed just buy this as a DataPower appliance so it’s less headache later on.