K6.io, Grafana e InfluxDb é a melhor stack para stress test
A stack, K6.io, Grafana e InfluxDb, nos possibilita ter uma ótima experiência quando o assunto é stress test. Por ser uma stack open source ela possibilita aos times de engenharia mais velocidade com o menor esforço ao criar um teste de carga.
Empresas demoram até duas horas para descobrir problemas em produção
Empresas demoram mais de duas horas para descobrir problemas em produção, segundo o report DoraDevops. Dessa forma, considerando que um software bem-feito deve atender aos atributos de qualidade, esse conjunto de ferramentas para stress test pode ajudar a compreender o comportamento do seu software. Além disso, ao adotar um stress test vamos colaborar para boa experiência do cliente.
Resiliency, Scalability, Security e Observability são os atributos de qualidade mais comuns ao observar em um stress test, entretanto outros também podem entrar nessa lista.

O esforço de implementação da stack é mínimo se comparado com os ganhos e resultados obtidos
version: '3.4'
services:
influxdb:
image: influxdb:1.8
ports:
- 8086:8086
environment:
- INFLUXDB_DB=k6
restart: always
volumes:
- ./influxdb:/var/lib/influxdb
networks:
- grafana
grafana:
image: grafana/grafana:latest
ports:
- "3000:3000"
environment:
- TZ=America/Sao_Paulo
- GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
- GF_AUTH_ANONYMOUS_ENABLED=true
- GF_AUTH_BASIC_ENABLED=false
volumes:
- ./grafana/data:/var/lib/grafana
networks:
- grafana
networks:
grafana:
import http from 'k6/http';
import { check, sleep } from 'k6';
let delta = 1;
export let options = {
stages: [
{ duration: "10s", target: (delta * 1) },
{ duration: "5s", target: (delta * 1) },
{ duration: "10s", target: (delta * 2) },
{ duration: "5s", target: (delta * 2) },
{ duration: "10s", target: (delta * 3) },
{ duration: "5s", target: (delta * 3) },
{ duration: "10s", target: (delta * 4) },
{ duration: "5s", target: (delta * 4) },
{ duration: "10s", target: (delta * 5) },
{ duration: "5s", target: (delta * 5) },
{ duration: "10s", target: (delta * 6) },
{ duration: "5s", target: (delta * 6) },
{ duration: "10s", target: (delta * 7) },
{ duration: "5s", target: (delta * 7) },
{ duration: "10s", target: (delta * 8) },
{ duration: "5s", target: (delta * 8) },
{ duration: "10s", target: (delta * 9) },
{ duration: "5s", target: (delta * 9) },
{ duration: "10s", target: (delta * 10) },
{ duration: "5s", target: (delta * 10) },
{ duration: "2s", target: (delta * 10) },
{ duration: "2s", target: (delta * 9) },
{ duration: "2s", target: (delta * 8) },
{ duration: "2s", target: (delta * 7) },
{ duration: "2s", target: (delta * 6) },
{ duration: "2s", target: (delta * 5) },
{ duration: "2s", target: (delta * 4) },
{ duration: "2s", target: (delta * 3) },
{ duration: "2s", target: (delta * 2) },
{ duration: "2s", target: (delta * 1) },
{ duration: "2s", target: (delta * 0) }
]
};
export default function () {
let url = `http://localhost:5021/`
let response = http.get(url);
check(response, {
'Hello World': (r) => r.status === 200
});
sleep(1);
};
k6 run -o influxdb=http://localhost:8086/k6 .\script.js
Conclusão
Ter qualidade no software que desenvolvemos não é um opcional, portanto, aderir ao stress test, load test é fundamental para manter a confiabilidade de nossas aplicações, além disso com a adoção do K6.io, Grafana e InfluxDb como sua stack para stress test, você cria oportunidades de melhorar ainda mais a confiabilidade adotando, por exemplo, a engenharia do caos.