이 글에서는 k6를 설정하고 테스트하는 방법을 안내합니다.
이 글은 다음 글들과 이어집니다.
- (1/4) 성능 테스트
- (4/4) 로그 수집 서비스 성능 개선하기
k6
지난 글에서 성능 테스트 툴로 k6가 제일 적합하다고 판단하였습니다.
k6 특징을 살펴보면
- k6는 Grafana Labs에서 개발한 도구로 웹 서비스, API, 마이크로서비스 등의 성능을 테스트하고 분석하는 데 사용됩니다.
- 스크립트를 JavaScript로 작성할 수 있어서 접근성이 좋습니다.
- 툴 자체는 Go 언어로 작성되어 있어서 가볍고 빠르며, 적은 리소스로 대규모 부하 테스트가 가능합니다.
- 로컬에서 실행하거나 클라우드에서 분산 테스트도 가능합니다.
설치하고 실행하기
k6 설치하기
brew install k6
macOS는 homebrew로 쉽게 설치하실 수 있습니다. 다른 OS에서 설치 방법은 공식 문서를 참고바랍니다.
k6 실행하기
k6 new
이 명령어는 테스트해볼 수 있는
script.js
파일을 생성해줍니다.export const options = {
vus: 10,
duration: '30s',
export default function() {
http.get('https://test.k6.io');
sleep(1);
}
생성된
script.js
의 내용은 위와 같습니다. k6 run script.js
위 명령어로 로컬에서 스크립트를 실행시킵니다. 스크립트가 실행되면 vu 10개가 30초 동안 'https://test.k6.io' 로 요청을 보냅니다.
k6 run --vus 10 --duration 30s script.js
VU(가상 사용자) 수와 지속 시간을 명령어로 지정해 줄 수도 있습니다. 명령어로 지정한 값은 스크립트보다 우선하여 동작합니다.
VU 병렬적으로 동작하며, 일반적으로 VU가 많다는 것은 시뮬레이션된 트래픽이 많다는 것을 의미합니다.
kubectl apply -f /path/k6-resource.yaml
쿠버네티스에서 분산 테스트를 실행할 수 있습니다. MSA 환경에서 어떻게 동작하는지 테스트하기에 적합합니다.
k6 cloud script.js
k6 클라우드를 통해 스크립트를 실행할 수도 있습니다.
VU 설정하기
export const options = {
stages: [
{ duration: '1m', target: 50 }, // 먼저 1분 동안 VUser 1에서 50까지 서서히 올린다.
{ duration: '5m', target: 50 }, // VU 50에서 5분간 유지한다.
{ duration: '30s', target: 150 }, // 30초간 50에서 150까지 서서히 올린다.
{ duration: '5m', target: 150 }, // 5분간 유지
{ duration: '1m', target: 0 }, // 1분 동안 VU 0으로 내려온다.
],
}
스크립트에서 VU의 변동을 설정할 수 있습니다. 시간 별로 부하 강도를 설정하여 다양한 상황에 따른 트래픽 환경을 테스트 할 수 있습니다.
결과 출력
Summary statistics

테스트가 종료되면 기본적으로 위와 같은 요약 통계를 출력합니다. 위 출력에서 주의해서 볼 항목들은 다음과 같습니다.
- http_reqs : 요청 측정
- http_req_failed : 오류율(가용성) 측정
- http_req_duration : 요청 시간(대기 시간) 측정
위 측정 지표는 RED 방법 기준에 따릅니다. RED 방법 기준에 따르면, Rate, Error, Duration 지표를 통하여 유저가 불편할 수 있는 요소가 있는지 모니터링 합니다.
위 지표를 보면 유저가 얼마나 빠르게, 오류없이 서비스를 이용할 수 있는지 확인할 수 있습니다.
Time series and external outputs

요약 통계는 간편하게 전체적인 지표를 확인할 수 있지만 심층적인 분석을 위해서는 시계열 데이터를 확인해야 합니다. k6에서는 시계열 데이터를 이용하는 두가지 방법을 제공합니다.
- JSON 또는 CSV 파일로 출력
- 외부 서비스로 스트리밍
제일 간단한 방법은 Grafana Cloud를 이용하는 방법입니다. 클라우드를 이용해 테스트를 진행하면 위와 같은 시계열 차트를 제공해줍니다. 계정을 생성하면 14일간 무료 체험을 제공하니 테스트 해 볼 수 있습니다.
정리
k6를 설정하고, Grafana Cloud로 시계열 데이터를 시각화 하는 방법까지 알아보았습니다. 물론 비용적인 이슈가 있다보니 Grafana Cloud 선택하는 것은 고민의 여지가 있습니다. (몸이 편하면 다 비용이다..)
그래서 다음 글에서는 오픈 소스를 이용하여 시계열 데이터를 시각화하는 방법을 알아보겠습니다.
여기까지는 공식 문서만 봐도 잘 알 수 있지만, 다음 글부터는 문서에서 제대로 알기 어려운 삽질의 결과물 입니다.
Share article