I have an application (an IP conferencing service) that I need to scale. It has quite a few independent components/applications, written in different languages (mainly C++ and PHP, some Perl). Currently a single installation runs on 5 machines, with 1-2 components sharing a single box. The configuration of each box therefore is different, so it's a pain to scale the whole thing, not to mention maintenance.
The individual components vary from media proxies to message proxies and databases, so load is everything but even.
I was thinking about putting all components on a single machine and add more boxes as I go along with some sort of a load balancer in front. Others advised me to scale the other way - add specialized boxes where the app load gets high - but this leads back to the maintenance nightmare.
Do you know resources where I should start? Ideally I'd need some benchmarks which approach is better in terms of performance? (thinking aloud, when I have X amount of load and Y amount of memory and processing power where does it matter how I allocate it?)