O objetivo deste artigo é explicar o ambiente AWS e suas características, funcionalidades e também discutir as melhores práticas ao trabalhar com a AWS, especificamente testes de carga AWS e autoscalamento. Também vamos comparar os testes de carga da AWS com como o LoadView funciona e é muito mais fácil de usar do que outras ferramentas e soluções no mercado atualmente.
Teste de carga jmeter com LoadView

Execute testes de carga em larga escala a partir de uma rede de nuvem totalmente gerenciada

Teste de carga distribuído na AWS

O teste de carga distribuída na AWS, que é uma solução que simula milhares de conexões simultâneas com um único endpoint, será explicado. É uma ferramenta muito útil para qualquer pessoa que iterando em seu desenvolvimento de aplicativos e desempenho.

O que está sendo testado exatamente?

Imagine que você é um desenvolvedor e construiu o maior aplicativo do mundo (ou talvez seja o melhor aplicativo que você já construiu). Como desenvolvedor, você tem certeza de que funciona bem desde que você fez testes unitários e funcionais. O que você precisa saber a seguir é, isso vai se apresentar em produção e vai funcionar em escala? A escalabilidade é incrivelmente importante. Os aplicativos de teste de carga podem ser considerados como os mesmos testes funcionais, mas apenas aplicando carga em seus aplicativos e observando o que acontece. Há uma diferença entre testar para um usuário e testá-lo para mil pessoas é diferente.

A solução constrói uma estrutura onde você pode testar seus aplicativos sob carga usando serviços de contêineres elásticos para girar contêineres que criam centenas de conexões ao seu ponto final e você pode girar centenas desses contêineres. A página de destino do teste decarga atribuído a D na AWS é mostrada abaixo.

Teste de carga distribuído na AWS

Como é visto a partir da figura, há um link para um modelo CloudFormation que irá girar a solução na conta do usuário com um par de cliques, um guia de implantação detalhado. O View Deployment Guide é um guia detalhado que fornece instruções sobre as considerações de arquitetura e as etapas de configuração para implantar o Distributed Load Testing na AWS na nuvem da Amazon Web Services (AWS). O código-fonte está disponível no GitHub se o usuário quiser tomá-lo e personalizá-lo para suas próprias necessidades e requisitos. O diagrama de arquitetura representa a infraestrutura geral da solução que compreende o front-end e o back-end.

AWS Front-End

Quando a parte frontal é considerada: há um console web e uma interface do usuário que o usuário pode usar para interagir com a solução. Há também uma API, que permite criar testes, visualizar o status do teste, refazer o teste e excluir as operações de teste. A interface do usuário vem do modelo CloudFormation. É aí que os usuários realmente começam a configurar o teste em si.

AWS Back-End

o back-end é composto por duas coisas: há um Docker Pipeline e, em seguida, o próprio mecanismo de teste real. De onde o Docker Pipeline vem é que a solução usa um software de código aberto chamado Taurus. Há uma imagem do Docker disponível no Docker Hub que um usuário pode usar. Isso permite que o usuário gere centenas de conexões simultâneas com um ponto de extremidade. Ele também suporta JMeter e Gatling, que são outras ferramentas de teste. Esta é a parte real de teste das imagens e este é o aplicativo que vai fazer o teste e que vem na forma de uma imagem Docker. O pipeline back-end vai pegar esse pacote de imagens para nós e empurrá-lo para o S3 na conta do cliente. E então codePipeline e CodeBuild estão sendo usados para construir essa imagem e registrá-la em Serviços de Contêineres Elásticos.

O teste real está ocorrendo em AWS Fargate. É um serviço gerenciado que permitirá que você execute seus contêineres no Elastic Container Service sem precisar se preocupar com a rede ou a infraestrutura subjacente. É literalmente apenas girar uma tarefa, executar o número de recipientes que você quer que todo o resto seja cuidado. Além disso, temos uma função Lambda que vai receber os pedidos da nossa API e é isso que está realmente executando os testes. Ele armazenará um modelo de teste em S3. Ele armazenará todas as informações que estamos coletando no Dynamo e, em seguida, estamos usando SQS para fazer fila nessas tarefas na AWS Fargate para que possamos começar a girar nossos contêineres.

Configurando um teste AWS

Abaixo, há uma apresentação sobre a parte frontal sobre como configuramos um teste.

Teste de configuração do AWS

  1. O usuário aperta o botão do botão“Criar teste”
  2. Usuário dá um Nome, Descrição, Contagem de Tarefas (é o número de contêineres que você deseja executar), Concorrência (é o número para cada contêiner. Quantas conexões simultâneas que vão criar), Ramp Up (quanto tempo vou conseguir desde o início para chegar a esse número de conexões simultâneas), Hold For (quanto tempo vou realizar esse teste?)
  3. Cenário: Ponto final HTTP em teste (atualmente AWS suporta ponto final único), Método HTTP (AWS suporta GET, PUT, POST, DELETE operations), HEADERS HTTP, Body Payload (Cabeçalhos e Carga útil podem ser analisados).

Abaixo, uma captura de tela de um teste atualmente é fornecida:

Detalhes do teste de carga da AWS

Os detalhes do teste foram fornecidos. Neste exemplo específico, 20 contêineres foram solicitados, 20 contêineres estão funcionando. Uma vez terminado na parte traseira, cada um dos recipientes executará os testes, pegará os resultados e, em seguida, armazenará isso na forma de um arquivo XML em S3 da nossa função Lambda back-end. Assim que todos os contêineres terminarem, pegaremos essa informação e adaremos, passaremos todas essas informações para o Dínamo.

Abaixo, há três capturas de tela de uma página que representa os resultados do teste.

AWS Load Test Details HTTP Test

Resultados dos testes da AWS

Histórico de resultados da AWS

Se o usuário olhar para um teste concluído, eles são apresentados com resumo; resultados de teste que são tempos médios de resposta, latência, CloudWatch Metrics para que possamos ver como estamos nos saindo, vários outros pontos de dados, bem como um histórico de resultados.

Imagine que você poderia executar isso uma vez, fazer algum ajuste fino em seu ponto final em sua API e, em seguida, executar novamente o teste novamente para ver como isso melhora o tempo de resposta para que os desenvolvedores possam iterar e ver seus resultados ao longo do tempo do melhorias para a realização de sua aplicação. O mais importante é que eles estão vendo desempenho em escala.

Este foi um mergulho profundo em testes de carga distribuída na AWS. Esta solução remove todas as complexidades de gerar carga para testar suas aplicações em escala.

Autoscalamento AWS

O dimensionamento automático é um método usado na computação em nuvem, pelo qual vários recursos computacionais em um farm de servidores, normalmente medidos em termos do número de servidores ativos, são dimensionados automaticamente com base na carga no farm. O autodimensionamento AWS ajuda a alcançar a escalabilidade horizontal do seu aplicativo. Ajuda a alcançar alta disponibilidade, escalar e diminuir a capacidade de EC2, manter a capacidade desejada, aumentar/diminuir a capacidade perfeitamente com base na demanda, leva a otimizações de custos. Ele funciona com ELP e CloudWatch.

Criando balanceador de carga elástico

A figura abaixo mostra a estrutura geral para ajudar a entender o básico.

Balanceador de carga elástico

Criar balanceador de carga elástico

Antes de criar e configurar a configuração de lançamento e autodimensionamento, precisamos criar nosso Elastic Load Balancer (ELB), que é um provedor de serviços da AWS para distribuir tráfego de entrada uniformemente em instâncias saudáveis do EC2 que estão sob seu controle. Saudável é a palavra-chave aqui. O elastic load balancer executa verificações periódicas de integridade configuráveis e toma decisões sobre para onde enviar tráfego. A captura de tela abaixo é um caminho para o painel EC2.

Painel EC2

Aqui nosso objetivo é ir para servidores virtuais EC2 na nuvem. Como é mostrado abaixo, em Network & Security,selecionamos Balanceadores de Carga.

EC2 Dashboard_Network e Segurança

Depois disso, o usuário aperta o botão “Criar balanceador de carga”.

Criar balanceador de carga

O usuário dá um nome. Neste exemplo específico, deixamos Criar um balanceador de carga interno sem controle. Isso direcionará o nome DNS para um endereço IP público. Se verificado, o nome DNS será apontado para um IP privado. Ativar a configuração VPC avançada será verificada, o que nos permitirá atribuir sub-redes ao ELB em uma etapa posterior. A configuração do ouvinte nos permite mapear o tráfego ELB de entrada para portas de instâncias EC2. O mapeamento padrão da porta 80 ajuda a nossa aplicação.

Configurar verificação de saúde

O próximo passo, que é mostrado abaixo, é configurar a verificação de saúde.

Configurar verificação de saúde

Configure verificação de saúde: Opções

Aqui, nossas opções incluem HTTP, TCP e SSL padrão. Em nosso exemplo, vamos ficar em HTTP e direcionado para .txt arquivo de robôs. Se nosso servidor web não pode servir até a solicitação estática, então podemos assumir com segurança que algo está errado com a instância e nenhum tráfego adicional deve ser enviado a ele até que ele se torne saudável. Com as configurações atuais em detalhes avançados, uma instância EC2 será verificada a cada 30 segundos. Ele tem 5 segundos para responder ao pedido. A não resposta no tempo alocado significa que a instância pode ser insalubre. Duas verificações não saudáveis consecutivas colocarão as instâncias EC2 fora do status de serviço. Para se tornar saudável novamente. Ele deve passar por 10 verificações de saúde consecutivas antes de começar a receber o trânsito. Esses limites são aceitáveis para nossa aplicação.

Selecione Sub-redes/regiões

Selecione entre as opções sub-rede que mostram abaixo.

Selecione Sub-redes

Adicionaremos cada sub-rede que criamos para nossos servidores web. É importante mencionar que só podemos adicionar uma sub-rede por zona de disponibilidade.

Atribuindo grupos de segurança

Abaixo está uma captura de tela de como é atribuir grupos de segurança.

Atribua grupos de segurança

Precisamos selecionar um grupo de segurança para o nosso ELB, por isso, para este exemplo, selecionaremos o grupo de segurança ELB pré-configurado.

Adicionando instâncias EC2

Abaixo está uma captura de tela mostrando como adicionar instâncias EC2.

Adicionar instâncias ao Balanceador de Carga

Nesta etapa, precisamos garantir que o balanceamento de carga Enable Cross Zone seja verificado. Sem ele, nosso design de alta disponibilidade é inútil. Permitir a drenagem da conexão também deve ser verificado, o que determina como o tráfego é tratado quando uma instância está sendo não registrada ou foi declarada insalubre.

Criar página de revisão do balanceador de carga

A página Revisão é mostrada abaixo. A partir daqui você pode rever suas seleções e fazer quaisquer alterações adicionais, se necessário.

Criar página de revisão do balanceador de carga

Agora, o ELB foi criado. Uma vez terminado, estamos prontos para criar nossa configuração de lançamento uma política de autodimensionamento. Criar a política de autocalamento também é fácil, portanto, um usuário pode passar pelo processo sozinho.

LoadView versus a concorrência: por que o LoadView se destaca

Esta seção fornece comparações de alto nível entre outras ferramentas e soluções populares de teste de carga e LoadView. Nem todas as ferramentas de teste de carga são criadas iguais. Embora as ferramentas de código aberto geralmente não exijam custos e investimentos iniciais, o que pode torná-los uma opção fácil de usar, é melhor entender o que torna o LoadView mais fácil de usar do que outras ferramentas.

Apache JMeter

Apache JMeter, que é um software de código aberto, é para testes de carga de comportamento funcional e medição do desempenho dos aplicativos web. Em seguida, vamos dar um destaque os prós e contras de JMeter.

Vantagens do Apache JMeter

  • Plataforma independente. O JMeter pode ser executado em qualquer sistema operacional como Mac, Windows e Linux.
  • Fonte aberta. A ferramenta é de código aberto, o que significa que pode ser usada gratuitamente. Um desenvolvedor de software também pode fazer modificações e configurá-lo às suas necessidades, o que leva a muita flexibilidade. Um desenvolvedor pode personalizar o JMeter, aplicar testes de automação ao JMeter.
  • Funcionalidade. Com o JMeter, o usuário pode fazer qualquer tipo de teste que quiser – testes de carga, testes de estresse, testes funcionais, testes distribuídos, etc.
  • Reportagem. JMeter fornece inúmeros relatórios e gráficos – Gráfico, Gráfico e Visualização de Árvore. Além disso, os formatos HTML, JSON e XML para relatórios são suportados.
  • Suporte para muitos protocolos. JMeter suporta FTP, HTTP, LDAP, SOAP, JDBC e JMS.
  • Capacidade de geração de carga. O software tem uma capacidade ilimitada de geração de carga.
  • Execução. É fácil de executar. O usuário só precisa instalar Java, baixar JMeter e carregar o arquivo de script JMeter.
    Relatório de Análise. Os resultados são fáceis de entender para engenheiros e usuários menos experientes, e também permitem análises aprofundadas para testadores.

Desvantagens do Apache JMeter

  • Não sendo fácil de usar. Você tem que escrever muitos scripts, por isso não é tão fácil de usar quanto outras ferramentas. Pode ser confuso. Para ser capaz de realizar testes, o usuário precisa escrever scripts que podem ser difíceis, confusos, ele leva o software a não ser fácil de usar.
  • Falta de suporte para aplicativos de desktop. JMeter é ideal para testar aplicações web, no entanto, não é ótimo para testes de aplicativos de desktop.
  • Consumo de memória. JMeter é capaz de simular carga pesada, visualizar o relatório de teste que absorve muita memória, leva a memória a estar sob grande carga.
  • Sem suporte a JavaScript. JMeter não é um navegador, então ele só se comporta, ou simula, um navegador real. Ele não suporta AJAX e JavaScript, então isso afeta a eficiência do teste. Você não é capaz de medir adequadamente o desempenho do lado do cliente (para obter mais informações sobre prós e contras JMeter, confira nosso teste final de desempenho do guia com jmeter)

LoadNinja

LoadNinja é a plataforma de teste de carga na nuvem, permitindo determinar de forma confiável o desempenho de seus sites e aplicativos web sem usar nenhum script. LoadNinja foi construído e projetado do zero para a mídia os desafios enfrentados pelas ferramentas convencionais de teste de carga baseadas em protocolo. Discutiremos alguns dos destaques e limitações do LoadNinja.

Vantagens do LoadNinja

  • Usa navegadores reais
  • Métricas baseadas em navegador com recursos de análise e relatórios.
  • Vu Debugger. Permite que os desenvolvedores encontrem e isolem erros durante o teste.
  • Inspetor vu. Dá aos usuários uma visão de como os usuários virtuais interagem com suas páginas e aplicativos da Web enquanto o teste está sendo executado.
  • Ferramenta de gravação. Semelhante ao EveryStep Web Recorder, que abordaremos com mais detalhes abaixo, permite o script de ponto e clique.

LoadNinja Desvantagens

  • Dependente do AJAX. Não funciona se o JavaScript estiver desativado ou não.
  • Conteúdo dinâmico. O conteúdo dinâmico não será visível para o aplicativo baseado no AJAX.
  • Latência. Os problemas de latência podem ser maiores, apenas com base no comportamento assíncronivo do AJAX.
  • Custo. Pode ser caro, comparado com outras ferramentas do mercado e recursos incluídos.

LoadRunner

É uma ferramenta de teste de software da Micro Focus. É usado para testar aplicações, medir o comportamento do sistema e o desempenho sob carga. Ele pode simular milhares de usuários simultaneamente usando software de aplicativo. Vamos dar uma olhada rápida no que torna o LoadRunner popular e algumas das desvantagens da solução.

Vantagens do LoadRunner

  • Funcionalidade de replay e registro (além de correlação automatizada).
  • A variedade de protocolos é suportada, além de proprietários como Remote Desktop, Citrix e Mainframes.
  • O software pode tentar realizar análises automatizadas do gargalo.
  • Integração com infraestrutura como HP ALM, QTP.

O software pode monitorar a si mesmo e o aplicativo em teste em termos de disponibilidade de recursos (RAM, CPU, etc.).

Desvantagens do LoadRunner

  • LoadRunner é uma ferramenta de teste de software cara. Ele lançou recentemente versões de teste gratuitos, no entanto, ele não pode ser simplesmente baixado para uso.
  • LoadRunner tem uma capacidade limitada de geração de carga. O usuário não pode sobrecarregar a ferramenta LoadRunner com muitos usuários ou threads. (Se o usuário está procurando uma ferramenta de teste de desempenho que realizará testes pesados e também muitos usuários e grupos de threads, então o LoadRunner não seria a melhor escolha).
  • A execução é complexa. Ele cria um thread para cada usuário.
  • Em termos de Relatório de Análise, as informações em formato bruto são analisadas pela HP Analysis para gerar vários gráficos.

LoadView

O software é uma ferramenta de teste de estresse e carga baseada em nuvem para páginas da Web, aplicativos da Web, APIs e até mesmo streaming de mídia. Como o LoadView é baseado em nuvem, engenheiros e testadores podem girar e dimensionar rapidamente os testes de carga, dependendo de seus requisitos de carga. Um usuário pode produzir tanto tráfego quanto é solicitado. Nesse processo, o usuário não precisa lidar com infraestrutura adicional, o que é uma enorme vantagem sobre ferramentas de código aberto como o JMeter, que exige que os usuários executem testes de suas próprias máquinas, e não pode escalar para o nível que o LoadView oferece Além disso, o software gera uma sequência de solicitação HTTP GET/POST para testar servidores web e APIs web.

Vantagens do LoadView

  • Sem obrigações de preços de longo prazo, vem com um modelo de preços pay-as-you-go, para que os clientes possam carregar o teste sempre que necessário.
  • Suporte a gravação de cenários de usuários para aplicações de Internet dinâmicas e ricas (RIAs), como Java, HTML5, Flash, Vue, Angular, React, PHP, Silverlight e Ruby (entre muitos outros). Se ele puder ser renderizado no navegador de um usuário, o EveryStep Web Recorder o suporta.
  • Os usuários podem utilizar servidores de várias localizações geográficas globais para imitar a base de usuários esperada.
  • Criar scripts de teste de carga sem sequer ter que tocar em uma linha de código.
  • Testes de carga baseados em nuvem em navegadores reais.
  • Teste a compatibilidade em mais de 40 dispositivos e navegadores desktop/móvel.
  • Mais de 20 geolocalizações injetoras de carga em todo o mundo.
  • Diagnosticar gargalos, garantir a escalabilidade e determinar o desempenho geral.
  • Relatórios de desempenho, métricas para planejamento de capacidade, dashboards de desempenho e muito mais.

Resumindo esta seção, é mostrado que o LoadView é mais fácil de usar, mais eficiente do que as outras ferramentas restantes que abordamos.

 

Wrapping Up: AWS Load Testing – Balanceamento de Carga e Práticas Recomendadas

Neste artigo, cobrimos como realizar testes de carga distribuída com a AWS, o que limpa toda a complexidade de gerar carga para testar suas aplicações em escala. O teste de carga AWS é usado para ajudar os usuários a construir e reproduzir milhares de usuários conectados que alcançam o número de transações. Também cobrimos o recurso de autoscalamento dentro da AWS, incluindo definições de autoscaling, como criar balanceadores de carga elásticos para iniciar a configuração e configurar o autoscalamento. Também demos uma olhada em algumas das outras ferramentas populares de teste de carga no mercado e por que o LoadView é muito mais fácil de usar do que outras ferramentas.

Para uma olhada mais profunda no LoadView em comparação com outras ferramentas e soluções de teste de carga no mercado hoje, visite nossa página Alternativas para obter comparações e informações abrangentes lado a lado.

Comece a usar o LoadView hoje mesmo! Inscreva-se para a avaliação gratuita e obtenha testes de carga gratuitos quando começar.