views:

108

answers:

2

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?)

+5  A: 

I'd go for virtualization. That way you can have various similar configuration machines, and distribute load among them as needed, even if you keep modules in separate VMs.

schonarth
+1  A: 

You need to determine where the highest load or bottle neck will be it will be difficult to properly plan this without.

I would second looking at virtualization. It makes your app: Quick to deploy Easy to backup On event of failure quick to restore

alexmac