K6란 무엇인가 – 개발자 친화적인 부하 테스트 도구
K6는 현대 웹 애플리케이션을 위한 오픈소스 부하 테스트(Load Testing) 도구임.
개발자와 테스터가 성능 테스트를 코드처럼 작성하고 자동화할 수 있도록 설계됨.
특히 JavaScript 기반으로 스크립트를 작성하므로 개발 친화적이며, CI/CD 환경에서도 쉽게 통합 가능함.
1. K6의 주요 특징
- 코드 기반 시나리오 작성
- JavaScript 문법을 기반으로 테스트 스크립트를 작성할 수 있음.
- 경량화 및 고성능
- Go 언어로 개발되어 실행 속도가 빠르고, 수천~수만 RPS(Request per second)를 생성 가능함.
- 자동화에 유리함
- 테스트 스크립트를 Git 저장소에 관리하고, CI 파이프라인에 통합할 수 있음.
- 여러 환경 지원
- 로컬, Docker, 클라우드(K6 Cloud) 환경에서도 실행 가능함.
- 실시간 메트릭 제공
- 응답 시간, 오류율, RPS, 실패율 등 다양한 성능 지표를 실시간으로 확인할 수 있음.
2. K6 설치 방법
1) 로컬 설치 (macOS 기준)
brew install k6
2) Docker 사용
docker run -i grafana/k6 run - <script.js
3) 실행 확인
k6 version
3. K6 테스트 스크립트 구조
기본 K6 스크립트는 default 함수를 통해 요청을 정의함.
JavaScript 문법을 사용하여 간단한 요청부터 복잡한 시나리오까지 작성 가능함.
예시: 간단한 GET 요청
import http from 'k6/http';
import { check, sleep } from 'k6';
export let options = {
vus: 10, // Virtual Users (동시 사용자 수)
duration: '30s', // 테스트 시간
};
export default function () {
let res = http.get('https://example.com/api');
check(res, {
'status is 200': (r) => r.status === 200,
});
sleep(1); // 1초 대기
}
4. K6 옵션 설명
옵션 | 설명 |
vus | 동시에 실행될 가상의 사용자 수 |
duration | 테스트를 지속할 시간 |
iterations | 반복 횟수 지정 가능 |
thresholds | 성능 기준(응답 시간, 실패율 등) 설정 가능 |
stages | 부하 단계별 시나리오 구성 가능 (ramp-up/down) |
5. 부하 시나리오 예제 (stages 사용)
export let options = {
stages: [
{ duration: '1m', target: 10 }, // 1분 동안 10명까지 증가
{ duration: '3m', target: 50 }, // 3분 동안 50명 유지
{ duration: '1m', target: 0 }, // 1분 동안 0명으로 감소
]
};
6. 실행 및 결과 예시
k6 run script.js
실행 시 다음과 같은 메트릭을 제공함:
- http_req_duration: 평균 응답 시간
- http_req_failed: 실패 요청 비율
- http_reqs: 총 요청 수
- vus_max: 최대 동시 사용자 수
7. K6 Cloud (유료 옵션)
- 더 많은 사용자와 긴 시간 테스트가 필요한 경우 K6 Cloud를 사용할 수 있음.
- 테스트 결과를 웹 대시보드에서 시각화하고, 히스토리로 관리할 수 있음.
- SaaS 방식으로 CI/CD와 연동하여 정기적인 성능 테스트 수행 가능함.
8. 실무 활용 사례
- API 서버 부하 테스트
- 배포 전 REST API의 최대 처리량(RPS)을 측정하고 병목 지점을 확인함.
- 로그인/회원가입 시나리오 테스트
- 다양한 사용자 흐름을 시뮬레이션하여 실제 유저 행동 기반의 테스트 수행함.
- CDN/프록시 구성 테스트
- 정적 리소스, 이미지 요청에 대한 병렬 응답 처리 속도 확인함.
- CI 자동화 테스트
- GitHub Actions, Jenkins와 연동하여 배포 전 자동 부하 테스트를 수행함.
9. K6의 장단점
장점 | 단점 |
JavaScript 기반으로 친숙함 | 브라우저 기반 테스트는 불가함 |
경량화되어 빠르게 동작함 | UI 없이 CLI 기반으로만 작동함 |
CI/CD와 쉽게 통합됨 | 분산 테스트는 클라우드 요금이 발생함 |
실시간 결과, 커스터마이징 쉬움 | 로그 분석, 대시보드는 직접 연동해야 함 |
정리
K6는 현대적인 웹 시스템에 적합한 스크립트 기반 부하 테스트 도구임.
JavaScript 문법으로 테스트 시나리오를 정의할 수 있고, 경량 Go 기반으로 수만 RPS를 처리할 수 있을 만큼 효율적임.
단순한 GET 요청부터 복잡한 사용자 흐름까지 코드로 작성할 수 있어 테스트 자동화와 유지보수에 유리함.
CI/CD 파이프라인에 통합하면 성능 문제를 사전에 탐지하고 안정적인 서비스를 제공하는 데 큰 도움이 됨.
출처 : ChatGPT
'Infra' 카테고리의 다른 글
LAMP 스택 (0) | 2025.05.01 |
---|---|
Micrometer (1) | 2025.04.10 |
Prometheus (0) | 2025.04.09 |
Grafana (0) | 2025.04.08 |
리버스 프록시 (1) | 2025.04.03 |