O que é escalabilidade ?
Escalabilidade é a habilidade de um sistema de lidar com mais usuários, dados, transações ou requisições sem afetar a experiência do usuário. Um sistema escalavel pode aumentar sua capacidade ou diminuir e deve ser relativamente barato e rápido fazer isso.
Fatores para escalar uma aplicação
Existem algum fatores que te levam a escalar uma aplicação:
Dados
Quando seu sistema cresce, você começa a lidar com um alto conjunto de dados e realizar esse processamento se torna muito custoso.
Concorrência
A concorrência está relacionada a quantidade de usuários que podem utilizar seu sistema ao mesmo tempo.
Taxa de interação
A taxa de interação está relacionado com a frequência que os usuários trocam informações com o sistema.
Escalabilidade vertical
Para escalar verticalmente é necessário adicionar mais recursos na máquina. É uma solução mais simples e que não requer mudanças arquiteturais da sua aplicação. Se estiver usando uma máquina de 16GB de memória, pode trocar para 32GB ou 64GB somente alterando o hardware.
Não tem a necessidade fazer uma alteração na sua aplicação.
Esse tipo de escalabidade pode ser bom para aplicações pequenas, só que se a aplicação crescer começa a ter limitações de hardware e custo.
Escalabilidade horizontal
Para escalar horizontalmente adicionamos mais máquina. Esse tipo de arquitetura normalmente é pensado antes do desenvolvimento da aplicação e em alguns casos pode ser adicionado depois que a aplicação foi desenvolvida, sendo necessário realizar possíveis alterações na aplicação.
Referências:
Web Scalability for Startup Engineers: https://amzn.to/37VPQb6
Vertical vs Horizontal Scalability: https://www.youtube.com/watch?v=xpDnVSmNFX0
SCALABILITY: SCALE-UP OR SCALE-OUT, WHAT IT IS AND WHY YOU SHOULD CARE: http://www.brianjgraf.com/2013/05/17/scalability-scale-up-scale-out-care/
Discussion