Arquitetura Escalável da Web

O que é escalabilidade?
Escalabilidade é a propriedade desejável de um sistema, rede ou processo, o que indica sua capacidade de reagir e se adaptar sem perder qualidade, ou de lidar com o crescimento contínuo do emprego de forma fluida, estar preparado para crescer sem perder qualidade nos serviços oferecidos .
Você poderia dizer qual é a capacidade de nosso sistema de suportar uma carga de trabalho maior com modificações ou extensões que sejam razoáveis ​​em termos de custo, tempo, tempo e complexidade.
Tipos de escalabilidade
Em geral, podemos falar de escala vertical e horizontal ou uma combinação de ambas.

Dimensionamento Vertical


Consiste basicamente em aumentar a capacidade de um ou mais elementos específicos da nossa arquitetura, por exemplo, expandir a memória do nosso servidor central, ou substituir os CPUs por outros de maior velocidade. Em resumo, aumente as capacidades do servidor, algo muito comum quando usamos virtualização e dizemos que nessa altura o servidor terá 30% de RAM disponível.

Dimensionamento Horizontal


É o que iremos detalhar no tutorial, baseia-se no aumento do número de nós que realizam a mesma tarefa, utilizando diferentes tipos de planejamento, por exemplo, se temos um servidor web saturado, adicionamos outro para equilibrar a carga.
Tipos de arquitetura web baseada em níveis.
Falaremos sobre arquiteturas que podem ser aplicadas com sistemas linux, usando ferramentas open-source iremos das mais básicas às mais avançadas oferecendo escalabilidade horizontal e resistência a falhas, todas essas arquiteturas podem ser aplicadas em qualquer PaaS ou com infraestrutura própria.

1. Arquitetura de um nível


É o mais básico de todos onde existe apenas um servidor com Apache e MySQL que pode ser acessado remotamente. É muito comum em páginas com pouca margem de visitas ou ambientes de teste, não oferece nenhuma margem de tolerância a falhas e é difícil usá-lo para crescer horizontalmente.

2. Arquitetura de duas camadas


Desta vez, separamos o banco de dados do servidor web, oferecendo um pouco de tolerância a falhas. Desta forma, se o banco de dados falhar, o servidor web pode oferecer conteúdo de forma estática que não depende do banco de dados. E caso o servidor web falhe, ainda podemos acessar as informações criando um novo servidor web novamente.O design oferece várias falhas por não ser um design muito escalonável.

3. Arquitetura de três camadas


Desta vez, começamos a usar um balanceador de carga que receberá todas as solicitações dos usuários. Desta vez, oferecemos um design mais escalonável para que, se nossa carga aumentar, possamos adicionar mais servidores web e escalar. Podemos até aplicar o escalonamento automático para que os servidores da web sejam adicionados automaticamente em um determinado nível de carga ou em um horário de pico. O problema com esse design é que podemos saturar nosso banco de dados.

4. Arquitetura de quatro camadas


Agora fazemos uso de um balanceador de carga e um memcached tornando o sistema mais escalável. Com este projeto podemos adicionar quantos bancos de dados e servidores web forem necessários, além de oferecer tolerância a falhas. Podemos dividir a carga entre os bancos de dados com CASSANDRA oferecendo uma implementação de vários nós. Este projeto é muito mais complexo, mas adiciono uma tolerância a falhas muito maior e a capacidade de escalar todos os seus níveis.

5. Arquitetura de cinco camadas


O conteúdo de uma página da web pode ser dividido em estático e dinâmico. Por exemplo, dividimos a camada da web em um servidor Apache e outro com aplicativos JAVA executando Jetty ou JBoss. O Apache fornece o conteúdo estático enquanto o servidor de aplicativos lida com o conteúdo dinâmico ou instantâneo. Um exemplo disso pode ser a seção de perguntas frequentes de um site de suporte, por se tratar de um conteúdo meramente estático, pode ser gerenciado pelo APACHE / NGINX.

PROLONGAR

6. Arquitetura de seis camadas


Podemos ser um pouco mais elegantes e adicionar uma rede de entrega de conteúdo (CDN), ou o que na AWS é conhecido como Amazon CloudFront CDNPor exemplo, temos um site de E-learning e nossos usuários baixam os Guias em PDF ou Vídeos de nosso site. Podemos economizar toda essa largura de banda dedicada aos downloads, Ao oferecê-la a partir de um CDN que cuida disso, O resto da web pode rodar em nossa infraestrutura.

PROLONGAR

ConclusõesVimos arquiteturas multicamadas que podem ser aplicadas, dependendo do tráfego da web. É aconselhável criar arquiteturas pensando no futuro, que possam escalar e manter tolerância a falhas, evitando colapsos na web por falta de recursos ou falha de um nó indispensável. Ao criar alguns desses designs junto com outras recomendações, como backups e implantações automáticas, podemos oferecer um site com tempo de atividade 99,9 tolerante a falhas.Gostou e ajudou este tutorial?Você pode recompensar o autor pressionando este botão para dar a ele um ponto positivo

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave