Escalabilidade Horizontal (scale out), significa adicionar mais nós ao sistema, tais como adicionar um novo servidor e um sistema de software que permita a distribuição do trabalho entre múltiplas máquinas.

Na escalabilidade vertical aumentamos o poder do nosso hardware para aumentar nossa capacidade de lidar um número maior de requisições ou processar uma quantidade maior de informações. Quais as vantagens desta abordagem ?
* Mantemos o mesmo código e configurações do sistema
* Custo de desenvolvimento praticamente zero.
Eu recomendo fortemente que primeiro você tente escalar seu sistema verticalmente. Em muitos casos aumentar para uma máquina maior resolve o seu problema perfeitamente. Mesmo em sistemas de Cloud Computing como o Amazon EC2 é possível escolher maquinas mais poderosas. Então a dica é que enquanto o seu custo não for proibitivo continue jogando hardware no problema, na maioria dos casos vai ser mais barato que mobilizar o seu time para escrever novamente sua aplicação ou adapta-la para um ambiente distribuído.
Se o seu sistema continua crescendo o preço de continuar fazendo upgrade no seu hardware vai se tornar cada vez maior o que na maioria dos casos vai te obrigar a procurar uma solução distribuída. Sendo assim, deveríamos começar nosso sistema como um sistema que facilmente poderia ser escalado horizontalmente quando necessário certo ? O problema desta abordagem é que muitas vezes não sabemos inicialmente qual vai ser uso real de uma aplicação que vai levar a esta necessidade. A maioria dos projetos muda muito ao longo da sua vida e não temos muita informação no momento inicial de quais serão as necessidades reais no futuro.
Concluindo: Você só vai saber realmente qual a necessidade de escalar seu projeto a medida que ele for crescendo. Por isto cuidado ao otimizar prematuramente seu sistema, pode ser um tiro no pé.


Ter, Set 21, 2010
Arquitetura