Ao abordarmos a realização de testes de performance, é essencial considerar a execução desses testes em ambientes de nuvem, utilizando serviços renomados, como AWS CodeBuild, Azure DevOps e outros serviços SaaS oferecidos pelos principais serviços de cloud. Entre os principais benefícios que podem ser destacados nesse contexto, incluem-se:
- Escalabilidade.
- Flexibilidade geográfica.
- Redução de custos.
- Confiança nos resultados.
O conceito de Performance Testing as a Service tem ganhado popularidade. Essas são plataformas dedicadas principalmente a fornecer serviços para a realização de testes de performance, simplificando a execução em várias zonas, com cargas de trabalho intensas e disponibilizando um conjunto abrangente de ferramentas para monitorar a execução e os resultados obtidos.
Neste artigo, exploraremos o Grafana Cloud K6 e discutiremos por que você deve conhecer essa poderosa ferramenta.
Adeus K6 Cloud. Bem vindo Grafana Cloud K6✨
O k6 Cloud é um produto SaaS criado pela equipe do K6 para ser o companheiro perfeito. Ele trouxe facilidade de uso, bem como gerenciamento de equipe e recursos de continuos testing para seus projetos de teste de performance.
A partir do lançamento do Grafana Cloud K6, não estão sendo aceitas novas inscrições no K6 Cloud. Os usuários existentes do K6 Cloud continuarão a utilizá-lo sem interrupções. Além disso, está sendo planejada a migração do K6 Cloud para o Grafana Cloud K6 em uma data posterior.
O Grafana Cloud K6 é uma solução que visa da suporte a grande maioria dos recursos oferecidos pela k6 cloud, enquanto se beneficia dos recursos da plataforma Grafana Cloud para Visualização de dados e Observability.
Com a aquisição pela Grafana labs do K6 em meados de 2021, iniciou-se um processo de unificação de serviços.
Benefícios do Grafana Cloud K6🏆
Um dos principais benefícios a serem destacados ao optar pelo Grafana K6 Cloud é a oferta de um plano gratuito para os usuários.
Ao criar uma conta, os usuários têm acesso a um plano free que inclui horas de execução de VUs (Usuários Virtuais) K6 mensais, sem nenhum custo. Além disso, o plano gratuito oferece outros benefícios relacionados aos serviços do Grafana Cloud.
Essa disponibilidade de recursos gratuitos torna o Grafana K6 Cloud uma opção acessível e atraente para aqueles que desejam iniciar ou aprimorar seus testes de performance.
Além disso, outra vantagem notável é possibilidade de executar testes de carga na nuvem com até 1 milhão de usuários virtuais simultâneos ou 5 milhões de solicitações/segundo, com a possibilidade de distribuição em 21 localizações geográficas para os planos Cloud Pro e Cloud Advanced.
No entanto, o aspecto que mais se destaca, é a capacidade de ter testes de desempenho e observabilidade integrados em uma única plataforma.
A capacidade de incorporar as visualizações do K6 aos seus painéis já existentes no Grafana e correlacionar os resultados dos testes de desempenho com métricas, logs e rastreamentos do servidor é verdadeiramente a cereja do bolo.
Isso proporciona uma abordagem completa e holística para analisar o desempenho do seu sistema, permitindo que você identifique rapidamente as principais causas de problemas e tome medidas corretivas de forma eficiente.
Execução via Grafana K6 Cloud💻
Pré-requisitos📑
Script utilizando📃
Nesta etapa prática faremos modificações em um script de teste de performance, que requer a adição de configuração para a execução via Grafana Cloud K6.
O exemplo de script que será utilizado é o seguinte:
import http from 'k6/http';
import {sleep, check} from 'k6';
export const options = {
stages: [
{ duration: '10s', target: 10 },
{ duration: '10s', target: 10 },
{ duration: '10s', target: 0 }
],
thresholds: {
checks: ['rate > 0.95'],
http_req_duration: ['p(95) < 200']
}
}
export default function(){
const BASE_URL = 'https://test-api.k6.io/public/crocodiles';
const res = http.get(BASE_URL)
check(res,{
'status 200': (r) => r.status === 200
});
sleep(1);
}
Obtendo token de acesso🔐
Uma vez autenticado na Grafana Cloud, acesse Start Testing para K6:
Você será redirecionado para a página de testes de performance do seu usuário. Um projeto padrão é automaticamente criado para sua conta, porém você tem a flexibilidade de criar outros projetos de acordo com suas necessidades.
O id do projeto pode ser encontrado quando você clicar no nome do projeto.
O token necessário para execução via Grafana Cloud K6 pode ser obtido na opção Settings:
Executando nosso script😃
Antes de executar o seu script, é necessário autenticar-se no Grafana Cloud K6. Para fazer isso, copie o token gerado na etapa anterior, e em qualquer CLI da sua escolha, utilize o seguinte comando:
k6 login cloud --token <TOKEN>
Nesse tutorial, estamos utilizando o git bash.
Além disso, é necessário adicionar ao escopo de configuração algumas propriedades que façam referência ao projeto que será executado. Vamos modificar o bloco options do nosso script da seguinte forma:
export const options = {
stages: [
{ duration: '10s', target: 10 },
{ duration: '10s', target: 10 },
{ duration: '10s', target: 0 }
],
thresholds: {
checks: ['rate > 0.95'],
http_req_duration: ['p(95) < 200']
},
ext: {
loadimpact: {
projectID: '3633734',
name: 'Exemplo de execução',
}
}
}
Por fim, podemos executar nosso script via cloud utilizando o seguinte comando:
k6 cloud script.js
No console você recebera uma saída semelhante a seguinte:
/\ |‾‾| /‾‾/ /‾‾/
/\ / \ | |/ / / /
/ \/ \ | ( / ‾‾\
/ \ | |\ \ | (‾) |
/ __________ \ |__| \__\ \_____/ .io
execution: cloud
script: script.js
output: https://marlo2222.grafana.net/a/k6-app/runs/1922864
scenarios: (100.00%) 1 scenario, 10 max VUs, 1m0s max duration (incl. graceful stop):
* default: Up to 10 looping VUs for 30s over 3 stages (gracefulRampDown: 30s, gracefulStop: 30s)
test status: Finished
Run [======================================] Finished
Run [======================================] Finished
Observe que a execution é destacada como via cloud, e um link de acesso ao output de execução está disponível, nele os dados de execução estarão disponíveis.
Acessando o relatório de execução, podemos ter acesso as métricas coletadas pela execução:
Execução local, com métricas em cloud😲
Uma outra possibilidade que a Grafana Cloud K6 nos proporciona, é a capacidade de executar nosso script localmente e enviar as métricas resultantes para o nosso projeto na nuvem no Grafana Cloud.
Para realizar isso, basta executar o seguinte comando na sua CLI:
k6 run --out cloud script.js
Como saída você terá todos as métricas que o K6 já disponibiliza no output da CLI:
/\ |‾‾| /‾‾/ /‾‾/
/\ / \ | |/ / / /
/ \/ \ | ( / ‾‾\
/ \ | |\ \ | (‾) |
/ __________ \ |__| \__\ \_____/ .io
execution: local
script: script.js
output: cloud (https://marlo2222.grafana.net/a/k6-app/runs/1922875)
scenarios: (100.00%) 1 scenario, 10 max VUs, 1m0s max duration (incl. graceful stop):
* default: Up to 10 looping VUs for 30s over 3 stages (gracefulRampDown: 30s, gracefulStop: 30s)
✓ status 200
✓ checks.........................: 100.00% ✓ 168 ✗ 0
data_received..................: 235 kB 7.8 kB/s
data_sent......................: 52 kB 1.7 kB/s
http_req_blocked...............: avg=7.05ms min=0s med=0s max=281.88ms p(90)=0s p(95)=0s
http_req_connecting............: avg=3.43ms min=0s med=0s max=134.81ms p(90)=0s p(95)=0s
✓ http_req_duration..............: avg=121.31ms min=109.75ms med=120.41ms max=227.33ms p(90)=129.66ms p(95)=136.04ms
{ expected_response:true }...: avg=121.31ms min=109.75ms med=120.41ms max=227.33ms p(90)=129.66ms p(95)=136.04ms
http_req_failed................: 0.00% ✓ 0 ✗ 336
http_req_receiving.............: avg=21.66µs min=0s med=0s max=1.01ms p(90)=34.35µs p(95)=66.59µs
http_req_sending...............: avg=10.65µs min=0s med=0s max=766.1µs p(90)=0s p(95)=63.72µs
http_req_tls_handshaking.......: avg=3.44ms min=0s med=0s max=134.52ms p(90)=0s p(95)=0s
http_req_waiting...............: avg=121.27ms min=109.6ms med=120.34ms max=227.33ms p(90)=129.66ms p(95)=135.95ms
http_reqs......................: 336 11.164001/s
iteration_duration.............: avg=1.26s min=1.23s med=1.24s max=1.55s p(90)=1.28s p(95)=1.46s
iterations.....................: 168 5.582/s
vus............................: 2 min=1 max=10
vus_max........................: 10 min=10 max=10
running (0m30.1s), 00/10 VUs, 168 complete and 0 interrupted iterations
default ✓ [======================================] 00/10 VUs 30s
Mas ao acessar seu link de output da execução ou o próprio projeto na grafana cloud, você terá acesso as métricas coletadas:
Observe que a execução local para o mesmo cenário apresentou menor vazão(RPS) de requisições bem como um maior response time para o p(95), sendo quase 6 vezes maior.
Conclusão💖
Como evidenciamos anteriormente, o processo de integração entre K6 e Grafana Cloud K6 é descomplicado e traz consigo inúmeras vantagens, sendo a maior confiabilidade nas métricas obtidas uma das mais significativas.😄
Vale ressaltar, também, o período de uso gratuito mensal, no qual as horas disponibilizadas podem ser de extrema utilidade em provas de conceito, permitindo validar a confiabilidade dos dados coletados e demonstrar os benefícios de adotar um ambiente de Performance Testing as a Service.📚
Gostou do conteúdo e quer saber mais sobre testes de performance com K6? Então não deixe de conferir meu curso na Udemy:
Top comments (0)