이번 글에서는 다양한 부하 테스트 도구 중에서 Grafana lab에서 개발한 K6에 대해서 알아보고, 사용해보도록 하겠다.
먼저, Grafana K6의 주요 특징들을 살펴보자. 공식문서가 아주 잘 되어 있으니 참고하면 좋을 것이다.
K6는 다른 부하 테스트 도구들(nGrinder, Jmeter)에 비해 비교적 최근 개발된 오픈소스 도구이다. 2017년에 첫 릴리즈가 이루어졌다.
후발주자인 만큼 다른 테스트 도구들에 비해서 공식문서가 잘 되어있고, 모던하다.
K6는 Javascript로 부하 테스트용 스크립트를 작성한다.
스크립트는 Js로 작성하지만, 스크립트를 실행하는 엔진은 Node가 아니라 Go로 개발되었다.
기본적으로는 GUI 또는 브라우저 환경에서 테스트를 생성 또는 조회할 수 있는 환경을 제공하지는 않는다.
다만, Grafana 대시보드를 붙이면 뚝딱 대시보드를 만들 수 있고, 아직은 베타버전 단계이지만, Grafana lab에서는 K6 브라우저도 개발하고 있다.
나는 Ubuntu(wsl)에 설치할 것이지만, Mac, Windows, Docker도 지원한다.
sudo gpg -k
sudo gpg --no-default-keyring --keyring /usr/share/keyrings/k6-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C5AD17C747E3415A3642D57D77C6C491D6AC1D69
echo "deb [signed-by=/usr/share/keyrings/k6-archive-keyring.gpg] https://dl.k6.io/deb stable main" | sudo tee /etc/apt/sources.list.d/k6.list
sudo apt-get update
sudo apt-get install k6
Ubuntu에서는 위 명령어들을 실행해주면 뚝딱 설치가 된다.

설치 완료 후, 버전을 찍어보면 정상적으로 K6의 버전이 출력되는 것을 확인할 수 있다.
k6 new
위 명령어를 실행하면, script.js파일이 현재 디렉토리에 생성된다.
물론 원하는 이름으로 직접 파일을 생성해줘도 된다.
import http from 'k6/http';
import { sleep } from 'k6';
export const options = {
vus: 10,
duration: '30s',
};
export default function () {
http.get('http://test.k6.io');
sleep(1);
}
하나의 스크립트는 기본적으로 options와 default 함수로 구성이된다.
options 변수는 말그대로 테스크를 실행하는 데에 사용되는 옵션이고, 테스트 로직은 default 함수에 정의하면 된다.
k6 run {스크립트 파일 명}.js
위 명령어를 통해서 특정 파일을 실행할 수 있다.
실행이 완료되면, 아래와 같은 결과가 출력이 된다.
