k6 2.3.0은 부하 시험을 파이프라인에 올린다, 스크립트는 JavaScript, 임계값이 통과 여부를 정한다
요약
k6는 Go 엔진에서 돌고 시험 스크립트는 JavaScript나 TypeScript로 쓴다. 임계값을 못 넘기면 그 회차는 실패로 처리되고 결과는 Grafana 보드로 보낼 수 있다. 지금 판은 2.3.0.
추천- 이름
- k6
- 버전
- 2.3
- 요금
- 무료
- 오픈소스
- 오픈소스
- 운영체제
- WindowsLinuxmacOS
- 공식 사이트
- https://grafana.com/oss/k6/
- 업데이트
- 2026-10-21 12:40
k6는 공개 부하 시험 도구이고 엔진은 Go, 시험 스크립트는 JavaScript나 TypeScript로 쓴다. 성능 시험을 소프트웨어 공학의 일부로 다루므로 스크립트는 저장소에 들어가고 임계값은 스크립트에 적히며, 끝나면 통과나 실패의 결론이 나와 그대로 파이프라인에 붙는다.
실행 파일 하나, 스크립트 하나
나누는 방식은 다른 명령줄 도구와 같다. Linux는 deb, rpm, tar, macOS는 x64와 arm64 압축 파일, Windows는 msi와 zip이며 실행 파일 하나를 두면 돈다. 프로젝트는 Grafana Labs가 맡고 2016년에 시작했으며 2021년에 창업 회사와 함께 Grafana Labs로 들어갔고 라이선스는 GNU AGPL 제3판이다.
스크립트는 JavaScript 모듈이고 내보내는 기본 함수가 가상 사용자마다 돌리는 한 회차다. 설정은 options 객체에 쓰고 명령줄에서 덮어쓸 수 있다. TypeScript로도 쓸 수 있다. 엔진은 Go이고 한 프로세스가 아주 적은 메모리로 많은 가상 사용자를 일으킨다. 늘 강조하는 지점이다.

임계값: SLO를 판정 기준으로 적기
임계값은 이 도구와 한 번 돌려 보기의 경계다. 지표에 통과선을 그어 두고 끝났을 때 그 선을 못 넘으면 실패 상태를 돌려준다. 문서의 예가 구체적이다.
판정 기준 | 문서에 있는 임계값 예 |
|---|---|
오류 비율 | 1퍼센트 미만 |
95퍼센트 요청 | 응답 시간 200밀리초 미만 |
99퍼센트 요청 | 응답 시간 400밀리초 미만 |
특정한 한 지점 | 늘 300밀리초 이내 |
직접 만든 지표에도 같은 방식으로 임계값을 둔다. 종료 값이 결과에 따라 바뀌므로 임계값은 파이프라인 안의 스위치가 된다. 공식이 말하는 자동화의 세 걸음은 이렇다. 먼저 시험에 임계값을 쓰고, 다음에 실행을 자동으로 돌리고, 마지막에 실패에 경보를 붙인다. 그 뒤로는 시스템이 목표에 못 미칠 때만 사람이 손을 댄다.
검사: 멈추지 않는 단언
검사는 참과 거짓의 조건을 확인한다. 상태 번호가 201인지, 응답 본문의 크기가 맞는지 같은 것이다. 대부분 시험 틀의 단언과 닮았지만 결정적인 차이가 하나 있다. 검사가 실패해도 시험은 멈추지 않고 그 회차도 실패로 판정되지 않으며 실패 비율을 지표로 적어 둘 뿐이다.
검사가 실제로 흐름을 막게 하려면 임계값과 짝을 지어야 한다. 검사가 사실을 모으고 임계값이 결론을 낸다. 이 분업 덕분에 한 번의 부하 시험이 이상한 표본을 빠짐없이 모으면서도 끝에 분명한 예나 아니오를 낼 수 있다.
장면: 한 번의 시험에서 여러 흐름 돌리기
장면은 가상 사용자와 반복을 어떻게 다룰지 적는다. 한 스크립트에 여러 장면을 선언할 수 있고 각각 다른 함수를 다른 실행기로 돌리며 서로 독립해서 나란히 간다. 시작 시각을 어긋나게 하면 차례가 만들어진다. 장면마다 환경 변수와 표지를 따로 붙일 수 있고 결과를 모을 때 표지로 갈라 본다.
이 방식은 실제 트래픽의 모양에 대응한다. 변하지 않는 고정 동시성, 단계적으로 압력을 올리는 비탈, 동시 수가 아니라 도착률로 거는 압력, 그리고 뾰족한 몰림과 긴 담금. 부하 스크립트를 모양마다 다시 쓸 필요가 없다.
규약과 확장
처음부터 쓸 수 있는 규약은 넷이다. HTTP/1.1, HTTP/2, WebSocket, gRPC다. HTTP/2는 스스로 올라간다. 먼저 HTTP/1.1로 잇고 서버가 지원한다고 알리면 바꿔 타며 스크립트는 고치지 않아도 된다.
다른 규약을 시험하려면 직접 빌드한 실행 파일이 필요하다. 프로젝트는 xk6라는 빌드 도구를 내놓고 공동체가 이것으로 SQL, Kafka, ZeroMQ, Redis를 이어 왔다. 확장은 네 가지다. JavaScript 확장은 스크립트에 연결 지점을 더하고, 출력 확장은 지표를 자체 형식이나 서비스로 보내고, 열쇠 확장은 시험에 증표를 주며, 하위 명령 확장은 k6 이름 아래에 자체 명령을 더한다.
결과는 어디로 가는가
기본으로 끝에 요약을 찍어 모은 숫자를 준다. 점 하나하나까지 보려면 그 자리에서 흘리는 출력을 열어 JSON 파일로 쓰거나 그대로 뒤쪽 서비스로 밀어 넣는다. 공식이 드는 목적지에는 Prometheus, Mimir, Datadog, New Relic, Timescale 같은 시계열과 분석 체계가 있고 안에 든 웹 보드로 곡선을 그 자리에서 볼 수도 있다.
이 길은 Grafana의 자리와 단단히 이어진다. k6가 만드는 것은 합성 트래픽이고 Grafana가 받는 것은 지표, 기록, 경로다. 둘을 합치면 공개 전에 먼저 압력을 넣는 일과 공개 뒤에 실제 트래픽을 지켜보는 일이 같은 하나의 시간선이 된다.
2.x가 바꾼 것
2.0은 정리였다. 오래 폐기한다고 알린 명령과 인수를 걷어 내고 Go 모듈 경로를 v2가 붙은 새 주소로 옮겼으며 모든 확장이 가져오기 경로를 따라야 했다. 호환을 끊는 올리기이고 배포 기록에도 그렇게 적혀 있다.
2.3.0(2026년 9월 21일)이 더한 것은 실용적인 쪽이다. scenario 인수로 스크립트를 고치지 않고 시험 안의 몇몇 장면만 돌릴 수 있고, once 인수로 부하 스크립트를 그대로 연기 시험이나 기능 시험으로 쓸 수 있으며, 비동기 묶음의 시험적 지원으로 await 뒤에도 지표가 맞는 묶음에 남는다. 따로 1.8.2(10월 12일)는 의존성 안의 보안 문제만 고치고 기능은 더하지 않는다. 두 판의 줄기가 나란히 가고 하나는 앞으로, 하나는 덧대기만 한다.
누구에게 맞는가
이미 Grafana 관측 묶음을 쓰는 팀이라면 k6를 잇는 데 거의 마찰이 없다. 지표가 같은 저장소로 들어가고 보드도 나눠 쓸 수 있다. 시험을 저장소에 쓰는 데 익숙한 개발자는 그림으로 짜는 부하 도구보다 손에 맞는다고 느낀다. 스크립트는 검토할 수 있고 재현할 수 있으며 파이프라인에 올릴 수 있다.
반대로 한 번만 연결 지점을 눌러 숫자를 보고 싶다면 명령줄에 수십 줄짜리 스크립트가 여전히 가장 짧은 길이다. 눈으로 짜는 화면은 없고 만들 생각도 없다. 전제는 이렇다. 성능 시험은 단위 시험처럼 코드를 쓰는 사람이 써야 한다.
k6는 성능 시험을 코드 쪽으로 끌어당긴다. 스크립트는 코드, 판정은 코드 안의 임계값, 결론은 프로세스의 종료 값이다. Go 엔진은 가능한 적은 자원으로 트래픽을 만들고 Grafana 뒤쪽이 그것을 읽을 만한 곡선으로 바꾼다. 2016년에 시작해 2021년 Grafana Labs로 들어갔고 저장소는 3만 1천 개가 넘는 별을 모았으며 라이선스는 AGPL 제3판이다. 단위 시험처럼 성능을 재는 길을 간다.