LFCA: Aprenda Disponibilidade, Desempenho e Escalabilidade na Nuvem – Parte 14

No tópico anterior da nossa série LFCA, apresentamos uma introdução à computação em nuvem, os diferentes tipos e nuvens, e serviços em nuvem e explicamos alguns dos benefícios associados à computação em nuvem.

Se o seu negócio ainda está baseado no ambiente de computação tradicional de TI, é hora de evoluir e migrar para a nuvem. Estima-se que até o final de 2021, mais de 90% da carga de trabalho total será tratada na nuvem.

Entre os principais benefícios associados à adoção da computação em nuvem estão melhor desempenho, alta disponibilidade e escalabilidade. Na verdade, mencionamos esses como um dos principais benefícios do uso da tecnologia em nuvem.

Neste tópico, focamos na disponibilidade, desempenho e escalabilidade da nuvem e buscamos entender como esses três elementos se unem para atender às demandas dos clientes e garantir que os usuários acessem seus dados conforme necessário de qualquer parte do mundo.

1. Disponibilidade na Nuvem

As aplicações e serviços de TI de uma organização são críticos e qualquer interrupção de serviço pode ter um efeito profundo na receita. A expectativa dos clientes é que os serviços sejam acessíveis 24 horas por dia, em qualquer momento e de qualquer localização. E é isso que a tecnologia em nuvem busca oferecer.

Alta disponibilidade é o objetivo último do computação em nuvem. Ela busca fornecer o maior tempo de funcionamento possível dos serviços de uma empresa, mesmo diante de interrupções que podem ser causadas por paradas de servidores inesperadas ou degradações de rede.

Alta disponibilidade é possível por meio de sistemas redundantes e de failover. Isto ocorre em um ambiente de cluster onde vários servidores ou sistemas executam as mesmas tarefas, oferecendo assim redundância.

Quando um servidor falha, os demais ainda podem continuar funcionando e fornecendo os serviços oferecidos pelo servidor afetado. Um exemplo perfeito de redundância é a replicação de dados entre vários servidores de banco de dados em um cluster. No caso de um servidor primário de banco de dados no cluster experienciar um problema, outro servidor de banco de dados ainda fornecerá os dados necessários pelos usuários mesmo com a falha.

A redundância elimina um ponto único de falha e garante que há 99,999% de disponibilidade de serviços e aplicativos. O clustering também fornece balanceamento de carga entre servidores e garante que a carga de trabalho seja equitativamente distribuída e nenhum servidor seja sobrecarregado.

2. Escalabilidade em Nuvem

Outro marco da computação em nuvem é a escalabilidade. A escalabilidade é a capacidade de ajustar recursos da nuvem para atender a demandas que mudam. Simplificando, você pode aumentar ou diminuir recursos de forma fácil e sem paradas quando necessário para atender a demanda, sem comprometer a qualidade dos serviços ou a interrupção do tempo de funcionamento.

Supondo que você esteja gerenciando um blog que começa a receber visitas e tráfego adicionais. Você pode facilmente adicionar recursos de computação, como armazenamento, RAM e CPU, à sua instância de computação em nuvem para lidar com a carga de trabalho adicional. Por outro lado, você pode dimensionar para baixo os recursos quando necessário. Isso garante que você pague apenas pelo que precisa e reforça as economias de escala que o cloud oferece.

A escalabilidade é de dois modos: Dimensionamento vertical e horizontal.

Dimensionamento Vertical

Também conhecido como ‘aumentar‘, o dimensionamento vertical envolve adicionar mais recursos, como RAM, armazenamento e CPU, à sua instância de computação em nuvem para acomodar a carga de trabalho adicional. Isto é o equivalente a desligar seu computador físico ou servidor para atualizar a RAM ou adicionar um disco rígido extra ou SSD.

Dimensionamento Horizontal

O dimensionamento horizontal, também conhecido como ‘duplicar‘, envolve adicionar mais servidores à sua pool de servidores existentes para garantir a distribuição da carga de trabalho entre múltiplos servidores. Com o dimensionamento horizontal, você não está limitado pela capacidade de um único servidor, ao contrário do dimensionamento vertical. Isso fornece mais escalabilidade e menos tempo de inatividade.

O dimensionamento horizontal é mais desejável em comparação com o dimensionamento vertical.

E aqui está o motivo. Com a escala horizontal, você basicamente está adicionando mais recursos, como servidores ou armazenamento, ao seu pool de recursos já existente. Isso permite combinar a potência e o desempenho de várias instâncias de computação em uma só, obtendo assim um melhor desempenho em comparação com apenas adicionar recursos em um único servidor. Servidores adicionais implicam que você não terá que lidar com a falta de recursos.

Além disso, a escala horizontal fornece redundância e tolerância a falhas de forma que, mesmo que um servidor seja afetado, os demais continuarão fornecendo acesso aos serviços necessários. A escala vertical está associada a um único ponto de falha. Se a instância de computação falhar, tudo cai junto com ela.

A escala horizontal também oferece máxima flexibilidade em comparação com a escala vertical, onde as aplicações são construídas como uma única unidade grande. Isso torna mais desafiador gerenciar, atualizar ou alterar seções de código sem ter que reiniciar o sistema inteiro. A expansão permite o desacoplamento de aplicações e permite uma atualização sem interrupção mínima.

3. Desempenho na Nuvem

Garantir que o desempenho da aplicação atenda às demandas dos clientes pode ser uma tarefa bastante desafiadora, especialmente se você tiver vários componentes em ambientes diferentes que precisam se comunicar constantemente.

Questões como latência são susceptíveis de se manifestar e impactar o desempenho. Além disso, não é fácil prever o desempenho onde os recursos são compartilhados por várias entidades. Independentemente disso, você ainda pode alcançar alto desempenho e se manter a flutuar implementando as seguintes medidas.

1. Instância na Nuvem

Certifique-se de usar as instâncias na nuvem adequadas com recursos suficientes para lidar com as cargas de trabalho de suas aplicações e serviços. Para aplicações intensivas em recursos, certifique-se de provisionar RAM, CPU e recursos de armazenamento suficientes para sua instância na nuvem para evitar um possível déficit de recursos.

2. Balanceador de Carga

Implemente um balanceador de carga para distribuir equitativamente o tráfego de rede entre seus recursos. Isso garantirá que nenhuma de suas aplicações seja sobrecarregada pela demanda. Suponha que seu servidor web esteja recebendo muito tráfego que esteja causando atrasos e impactando o desempenho.

A perfect solution would be to implement horizontal scaling with a total of 4 web servers sitting behind a load balancer. The load balancer will distribute network traffic across the 4 web servers and ensure none is overwhelmed by the workload.

3. Cache

Use soluções de cache para acelerar o acesso a arquivos pelas aplicações. Os caches armazenam dados frequentemente lidos e, assim, eliminam as constantes pesquisas de dados que podem impactar o desempenho. Eles reduzem a latência e a carga de trabalho, já que os dados já estão em cache, melhorando assim os tempos de resposta.

O armazenamento em cache pode ser implementado em vários níveis, como o nível da aplicação, o nível do banco de dados. As ferramentas de cache populares incluem o Redis, o Memcached e o cache Varnish.

4. Monitoramento de Desempenho

Por fim, certifique-se de monitorar o desempenho de seus servidores e aplicativos. Os provedores de nuvem oferecem ferramentas nativas que podem ajudá-lo a ficar de olho em seus servidores de nuvem a partir de um navegador da web.

Além disso, você pode tomar a iniciativa e instalar ferramentas de monitoramento gratuitas e de código aberto que podem ajudá-lo a manter controle sobre suas aplicações e servidores. Exemplos dessas aplicações incluem Grafana, Netdata e Prometheus, para citar alguns.

Conclusão

Não podemos enfatizar o suficiente como a disponibilidade, escalabilidade e desempenho são cruciais na nuvem. Os três fatores determinam a qualidade do serviço que você obterá de seu fornecedor de nuvem e, em última análise, traçam a linha entre o sucesso ou o fracasso de seu negócio.

Source:
https://www.tecmint.com/cloud-availability-performance-and-scalability/