Qual a importância de testes em aplicações de alta disponibilidade?

 

Falar em alta disponibilidade sempre esteve associado a aplicações de alto risco e de missão crítica. Para citar alguns exemplos, podemos destacar sistemas relacionados ao mercado financeiro, indústrias, fornecimento de energia elétrica e saúde.

Para esses sistemas, a principal característica envolvida é o risco, podendo ser de natureza material, financeira e envolvendo vidas humanas.

Devido ao impacto deste tipo de software, um dos principais requisitos a serem atendidos é o tempo de resposta. Os limites de tempo nunca podem ficar acima do esperado, devido às consequências que podem ocorrer tanto de ordem financeira quanto no que diz respeito ao impacto em vidas humanas.

Mas o cenário mudou. Com o surgimento dos serviços de Cloud Computing, a alta disponibilidade também passou a ser aplicada a outros tipos de aplicativos. Apesar do risco financeiro, a principal característica passou a ser a satisfação do cliente e o uso contínuo da aplicação é o mais importante. Realizar testes em aplicações de alta disponibilidade também se tornou fundamental.

Infraestrutura necessária para garantir alta disponibilidade

De forma resumida, para garantir a alta disponibilidade para os serviços de Cloud Computing, são utilizadas três soluções de suporte:

Consiste em distribuir automaticamente o tráfego gerado para as várias instâncias que fazem parte da arquitetura da solução. Isso permite reduzir falhas em decorrência do grande número de transações nos servidores de aplicação.

Representa um dimensionamento automático da estrutura de acordo com a demanda. Pode acontecer em situações de alta ou baixa demanda. Portanto, em momentos de pico a infraestrutura terá seus recursos ampliados, e nos momentos de baixo processamento a capacidade é reduzida.

É a capacidade de ter toda a infraestrutura de TI e dados espelhada em datacenters estabelecidos em locais físicos diferentes, permitindo a recuperação dos serviços de forma rápida em caso de desastres.

Vamos ver como podemos validar a alta disponibilidade das soluções.

Colocando a alta disponibilidade à prova

A única forma de termos certeza que a arquitetura de alta disponibilidade funciona como esperado será com a realização de testes. A validação consiste em levar o software ao extremo para que as soluções de balanceamento de carga, auto scaling e recuperação de desastres sejam utilizadas de forma a garantir a continuidade dos serviços.

Para cada solução utilizada será necessária uma estratégia de testes diferente, isto ocorre devido às características que fazem parte de cada serviço e também para realizar uma análise das respostas e comportamentos da solução quando aplicados os testes.

Tipo de testes aplicados

Como vimos, será preciso levar a solução aos limites para que cada serviço utilizado seja acionado. Os testes aplicados a esse cenário serão os relacionados a desempenho, carga e stress.

As estratégias de teste que vamos utilizar consistem em verificar as respostas da aplicação, quanto ao número de transações por minuto, transações por usuários simultâneas, e o comportamento da aplicação funcionando no seu limite. Entretanto nosso foco será o funcionamento dos serviços que fornecem a alta disponibilidade.

A ferramenta mais adequada para realizar esses tipos de será o Apache JMeter. Ela é preparada para executar testes em diferentes tipos de aplicação e possui várias ferramentas que permitem analisar resultados e criar cenários de testes de acordo com a necessidade.

Além do JMeter será necessária uma infraestrutura dedicada para gerar carga elevada e volume de dados, e também uma equipe de testadores com perfil correto e conhecimento avançado dessas estruturas e cenários a serem utilizados.

Monitorando os resultados

Em comum, o resultado esperado dos testes será a continuidade dos serviços, mas as respostas a serem verificadas serão de acordo com cada serviço avaliado.

Para o balanceamento de carga será necessário verificar que a distribuição das transações para cada servidor acontece corretamente mesmo com o excessivo envio de dados.

No auto scaling deverá ocorrer o redimensionamento automático da estrutura de servidores quando ocorrer sobrecarga de dados, e quando a carga for reduzida, então como resultado teremos o retorno para a estrutura original da solução.

Já para testar a recuperação de desastres o cenário é mais complexo, é necessário levar toda a estrutura que garante a alta disponibilidade ao seu limite, para então os serviços serem migrados automaticamente ao datacenter de apoio.

Uma estratégia que pode ser adotada durante o envio da massa de dados, é a equipe de testes de forma proposital derrubar os servidores principais e verificar se um site ou servidor secundário assume os serviços, mantendo a integridade dos dados.

Tivemos um esboço do que seria avaliar a alta disponibilidade nas soluções atuais, entretanto colocar esse projeto em prática demanda mais tempo e planejamento.

A Base2 possui a experiência e uma equipe de testes pronta para atender uma demanda tão complexa. Entre em contato conosco para tirar suas dúvidas e iniciarmos o seu projeto. E não deixe de nos acompanhar em nosso blog e nas redes sociais. 

About Contentools