Como obter alta disponibilidade na nuvem

A cada dia que passa estamos mais conectados aos serviços que consumimos. Para diversas solicitações que antes aguardávamos dias (e talvez semanas) para sermos atendidos, agora não estamos dispostos a aguardar poucos minutos. Evidentemente que a tecnologia dos dispositivos móveis, somada ao aumento da conectividade à internet impulsionaram esta “urgência” incessante que todos possuímos.

Por outro lado, as empresas, cada vez mais, entendem a necessidade de manter seus sistemas disponíveis para os clientes, o tempo todo, 24 horas por dia, 7 dias na semana. Esta preocupação crescente gera diversos questionamentos nos líderes de negócio das empresas. Eles buscam alternativas eficientes para prover maior disponibilidade em seus sistemas, com um custo viável para seus negócios.

Popularizou-se também, nos últimos tempos, a expressão genérica de que na nuvem pública é possível obter mais disponibilidade do que em ambientes on-premises ou nuvens privadas.

Embora seja verdadeira esta frase, ela é, como dissemos, genérica. Nosso objetivo aqui é exatamente detalhar as razões pelas quais as empresas que tem migrado para nuvem utilizando as melhores práticas dos Cloud Providers, tem obtido mais disponibilidade em suas aplicações e serviços.

Agora, para começar, o que é de fato disponibilidade? Para que evitemos interpretações diversas sobre o tema, vamos aproveitar a definição do Gartner: “A disponibilidade é a garantia de que a infraestrutura de uma empresa tem proteção e capacidade de recuperação a falhas, desastres naturais ou códigos maliciosos.

#1 Na nuvem, você tem múltiplos datacenters à sua disposição

Embora cada Cloud Provider tenha uma estratégia quanto à organização e distribuição de sua infraestrutura física, todos fazem uso de diversos datacenters físicos para suportar os serviços de nuvem que oferecem.

Com isso, é extremamente simples utilizar um serviço de armazenamento que replique automaticamente os dados entre múltiplos datacenters físicos, garantindo não só uma maior disponibilidade, mas também uma maior durabilidade dos dados.

A replicação de dados é suportada através de uma infraestrutura grandiosa de comunicação entre estes datacenters, que promovem muitas vezes baixa latência e banda larga (throughtput) de conexão.

Embora cada Cloud Provider tenha uma estratégia quanto à organização e distribuição de sua infraestrutura física, todos fazem uso de diversos datacenters físicos para suportar os serviços de nuvem que oferecem.

Com isso, é extremamente simples utilizar um serviço de armazenamento que replique automaticamente os dados entre múltiplos datacenters físicos, garantindo não só uma maior disponibilidade, mas também uma maior durabilidade dos dados.

A replicação de dados é suportada através de uma infraestrutura grandiosa de comunicação entre estes datacenters, que promovem muitas vezes baixa latência e banda larga (throughtput) de conexão.

#2 Conte com serviços de balanceamento de carga

A utilização de balanceadores de carga (do inglês load balancers) não é novidade. Há muitos anos eles são utilizados para distribuir tráfego de aplicações para diversos servidores.

O grande benefício na nuvem é que estes balanceadores de carga são um serviço, e não um hardware específico.

Talvez você questione, “por que isto é tão relevante?”. Bom, a resposta é simples: apesar de ser um recurso para prover maior disponibilidade, o balanceador de carga não pode falhar, ou melhor, ele não pode ser um único ponto de falha no ambiente. E este é um dos grandes benefícios de contar com este serviço, já que o Cloud Provider é responsável por garantir que o serviço de balanceamento de carga seja altamente disponível, por um custo extremamente baixo para os clientes.

Outro ponto importante de serviços como o Elastic Load Balancer da AWS, é que eles são também escaláveis. Muitos ambientes com balanceadores de carga de hardware falham porque em determinado momento o próprio balanceador não é capaz de suportar o tráfego que passa por ele. Por isso, o serviço escalável da nuvem é eficiente e garante maior disponibilidade por um custo-benefício imbatível.

#3 Escale automaticamente os servidores

É ótimo contar com um serviço de balanceamento de carga escalável, mas é preciso que os servidores que, de fato, suportam o tráfego também escalem. Somente assim é possível suportar demandas variáveis de usuários ao longo do dia, com eficiência.

Este é um dos serviços mais “vendidos” dos Cloud Providers. Basicamente, o que acontece é que você passa a gerenciar um grupo de servidores e não mais os servidores isoladamente. Este grupo de servidores vai aumentar ou diminuir a quantidade de membros de acordo com métricas pré-definidas, como por exemplo CPU, consumo de memória, de rede ou até métricas customizáveis.

Com isso, esse grupo de servidores pode ter 30 máquinas durante o dia, e apenas 2 máquinas durante a noite. Sendo que todo o processo de incluir ou remover servidores é feito automaticamente pelo Cloud Provider.

Por fim, vale dizer que na nuvem os recursos são virtualmente infinitos. Isto permite que a empresa aumente exponencialmente os seus servidores apenas por um dia, ou por algumas horas se necessário. Isto é particularmente importante em momentos de problemas na aplicação ou de alta demanda de tráfego.

#4 Transforme a cultura com DevOps

Definitivamente, a nuvem é a casa do DevOps. Em nenhum lugar é possível incorporar tanto os benefícios desta nova cultura que vem transformando organizações ao redor do mundo.

A possibilidade de codificar o ambiente, ou mesmo de fazer uso de ferramentas avançadas de deployment ou de gerenciamento da infraestrutura tornam a vida dos administradores menos reativa e mais proativa. Permite que os times técnicos trabalhem mais na melhoria da estrutura e menos corrigindo problemas ou “apagando incêndios”.

Além disso, a grande proposta do DevOps é integrar times de operações e desenvolvimento para que ambas, em conjunto, atendam de modo mais assertivo às necessidades de negócio da empresa. No fim do dia, é isso que importa.

Por isso, um dos ganhos fundamentais de disponibilidade em ambientes de nuvem é a incorporação de recursos de DevOps.

Estas ações, basicamente implicam em investir tempo em executar o processo corretamente uma única vez, e replicá-lo tantas quantas forem necessárias.

Ter apenas um botão para realizar o deployment automatizado do ambiente, sem envolver mais nenhuma ação de um ser humano é algo que custa um bom tempo de implementação, mas que na operação economiza muito tempo dos times e aumenta a disponibilidade do ambiente.

Embora não seja uma obrigação das empresas adotarem DevOps ao migrar para a nuvem, ao fazê-lo os benefícios serão rápidos e evidentes para os negócios.

A BRLink é parceira da Amazon Web Services e vem ajudando empresas a transformarem os seus negócios com a nuvem, desde 2010. Conte com a gente para entender como alcançar alta disponibilidade em seu ambiente.