Escalabilidade em sistemas distribuidos
Por: Willian Meira • 5/9/2017 • Trabalho acadêmico • 1.172 Palavras (5 Páginas) • 1.808 Visualizações
1 ESCALABILIDADE
Um sistema é definido como escalável se permanecer eficiente mesmo quando há
um aumento considerável no número de usuários e/ou na quantidade de recursos
utilizados. Por definição escalabilidade dentro da informática é a capacidade de um
sistema crescer de forma significativa sem sofrer quedas em seu desempenho. Projetos de
sistemas distribuídos escaláveis buscam contemplar os seguintes desafios: Controlar
custos de recursos; evitar queda no desempenho; evitar gargalos de desempenho.
Partindo desta definição sempre em que projetarmos um sistema, quer seja
hardware ou software devemos sempre nos atentar a planejar grandes crescimentos e
sempre estarmos prontos para aumentar a carga de maneira súbita. Como exemplo
podemos imaginar um Webserver que foi projetado inicialmente para atender cerca de
mil requisições por hora e com o passar do tempo passou a tender duas mil requisições.
A princípio este servidor sofrera uma queda significativa de desempenho que poderá ser
sanado alocando mais recursos, como memória e processamento, contudo ao longo do
tempo este serviço continua a crescer e passa a atender centenas de milhares de
requisições a ponto de seu hardware não possuir formas de crescer assim como seu
software oque causara constantes falhas e lentidão.
O senso comum tende a pensar que um sistema nunca chegara a crescer muito
além daquilo para o que foi projetado, entretanto temos vários exemplos históricos que
mostram o contrário.
Durante a década de 1980 com o surgimento da internet foi criado o protocolo
IPv4 e este protocolo tinha por objetivo criar um endereço IP para todos os computadores
conectados à internet. O protocolo consistia em um grupo de 32 bits divididos em 4
subgrupos de 8 bits cada. Este protocolo a princípio poderia suportar 4.294.967.296
endereços únicos o que na época parecia ser uma quantidade quase “infinita” de
endereços, entretanto na década de 2000 a internet banda larga se popularizou e em pouco
tempo já havia mais dispositivos conectados na rede do que sua estrutura inicial poderia
ter planejado, segundo a IHS hoje existem cerca de 8,2 bilhões de dispositivos que
reproduzem vídeo conectados à internet, sem conectar outros dispositivos como câmeras
de segurança por exemplo. Este valor já supera em muito o proposito inicial do protocolo
e como consequência houve a necessidade da criação de outro protocolo com ainda mais
endereços este é o protocolo IPv6 que possui um endereço de 128 bits que pode conter
340.282.366.920.938.463.463.374.607.431.768.211.456 endereços únicos. Este talvez
seja um valor absurdo, entretanto apenas o tempo poderá mostrar se é suficiente.
Tendo em vista este exemplo podemos perceber a necessidade de planejamento
quando construímos um sistema devemos sempre planejar um crescimento exponencial.
E este planejamento pode ser feito de duas maneiras, verticalmente o horizontalmente.
2 ECALABILIDADE VERTICAL E HORIZONTAL
2.1 Escalabilidade vertical
A escalabilidade vertical é a mais simples, consiste em simplesmente alocar mais
recurso para o sistema, melhorando individualmente cada nó do sistema, por exemple
alocar mais memória e processamento para as maquinas responsáveis pelo sistema. Este
método normalmente e eficaz, mas nem sempre é eficiente, pois muitas vezes gera um
custo muito alto e possui um limite estipulado de crescimento uma vez que todo hardware
possui um limite de slots e barramentos.
2.2 Escalabilidade horizontal
Já a escalabilidade horizontal é um pouco mais complexa que a vertical uma vez
que não cresce os nós individuais e sim divide a carga para outros nós. Por exemplo ao
invés de alocar mais memória para uma máquina responsável por um serviço cria-se um
clone dessa máquina e metade das requisições são enviadas para uma máquina e metade
para outra e caso o serviço continue a crescer mais maquinas podem ser criadas e ter suas
cargas divididas. Esta técnica é muito eficiente porem envolve um alto grau de
complexidade de desenvolvimento e mal planejado pode causar vários erros e falhas,
entretanto hoje talvez seja o melhor método para se desenvolver um sistema altamente
escalável.
3 CLOUD COMPUTING
Tendo em vista as dificuldades relacionadas a criação de sistemas altamente
escaláveis foi desenvolvido uma solução que alia as vantagens de ambos os métodos, esta
solução é chamada de cloud computing (computação em nuvem). Este conceito refere-se
a um sistema onde é possível acessar aplicativos e serviços através da internet, os dados
são armazenados de forma segura e abstrata. Hoje podemos identificar, segundo o blog
da salesforce, algumas características
...