본문 바로가기
IT

K6 설치와 사용법, JMeter와 비교 및 TPS 계산 방법

by kuja-hazzy-story 2024. 11. 4.
반응형

K6는 Grafana Labs에서 개발한 오픈 소스 성능 테스트 도구로, API와 웹 애플리케이션의 성능을 효율적으로 검증할 수 있습니다. 특히 Go 언어로 구현된 CLI 기반의 도구로, JavaScript로 테스트 스크립트를 작성하여 동시 접속자 시뮬레이션, TPS(Transactions Per Second) 계산 등 다양한 성능 테스트를 지원합니다. 이 글에서는 K6 설치와 기본 사용법, 시나리오 작성법, TPS 계산 방법, 그리고 JMeter와의 비교를 통해 K6의 주요 기능과 활용법을 알아보겠습니다.


K6란 무엇인가?

K6는 API와 웹 애플리케이션에 대한 성능 테스트와 부하 테스트를 수행하는 CLI 기반 도구입니다. JavaScript 기반의 스크립팅을 통해 복잡한 테스트 시나리오를 간단하게 작성할 수 있어 DevOps와 CI/CD 환경에서 인기가 높습니다.

K6의 주요 기능

  • 부하 테스트: 웹 애플리케이션의 동시 접속자 수를 시뮬레이션하여 부하를 측정합니다.
  • 성능 테스트: 응답 시간, 처리량, 에러율 등 시스템의 성능 지표를 측정합니다.
  • 스트레스 테스트: 시스템의 한계와 병목 현상을 파악하기 위해 과도한 부하를 걸어 테스트합니다.
  • CI/CD 통합: CLI 기반이므로 자동화 파이프라인과 쉽게 연동할 수 있어 지속적인 성능 모니터링에 적합합니다.

윈도우 환경에서 K6 설치 방법

Windows에서 K6를 설치하는 방법은 간단하며, 패키지 관리자인 Chocolatey를 사용하면 쉽게 설치할 수 있습니다.

  1. Chocolatey 설치: Chocolatey가 설치되어 있지 않다면, 관리자 권한의 PowerShell에서 아래 명령어를 실행하여 설치합니다.
  2. powershellSet-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
  3. 코드 복사
  4. K6 설치: Chocolatey 설치 후 아래 명령어를 입력하여 K6를 설치합니다.
  5. powershellchoco install k6
  6. 코드 복사
  7. 설치 확인: 설치가 완료되면, 아래 명령어로 K6 버전을 확인하여 정상 설치 여부를 확인합니다.
  8. bashk6 version
  9. 코드 복사

K6 사용법: 기본 테스트 스크립트 작성과 실행

K6는 JavaScript 기반으로 테스트 스크립트를 작성합니다. 아래 예제는 간단한 HTTP GET 요청을 통해 서버의 응답 상태를 확인하는 테스트 스크립트입니다.

javascript

코드 복사

import http from 'k6/http'; import { check, sleep } from 'k6'; export let options = { vus: 10, // 가상 유저 수 (동시 접속자 수) duration: '30s', // 테스트 지속 시간 }; export default function () { let res = http.get('https://test.k6.io'); check(res, { 'status is 200': (r) => r.status === 200 }); sleep(1); // 요청 간격 조절 }

테스트 실행하기

테스트 스크립트를 작성한 후, CLI에서 아래 명령어로 테스트를 실행할 수 있습니다.

bash

코드 복사

k6 run <스크립트파일명>.js

실행 시 K6는 콘솔에서 실시간으로 요청 성공률, 응답 시간, 에러율 등을 보여줍니다.


K6 시나리오 작성 방법

K6는 다양한 시나리오 설정을 통해 유연한 부하 테스트를 지원합니다.

  1. 고정 부하 시나리오: 일정 부하를 유지하는 간단한 시나리오입니다.
  2. javascriptexport let options = { vus: 50, duration: '1m', };
  3. 코드 복사
  4. 단계적 부하 증가 시나리오: 테스트 동안 부하를 점진적으로 증가시키는 설정입니다. 특정 시간 동안 동시 접속자 수를 단계적으로 조정하여 서버의 성능 한계를 확인하는 데 유용합니다.
  5. javascriptexport let options = { stages: [ { duration: '1m', target: 20 }, // 1분 동안 VU를 20까지 증가 { duration: '2m', target: 50 }, // 2분 동안 VU를 50으로 유지 { duration: '1m', target: 0 }, // 1분 동안 부하를 0으로 줄임 ], };
  6. 코드 복사

이런 시나리오는 실제 사용자의 증가 패턴을 반영하여 테스트할 수 있어 현실성 있는 성능 검증이 가능합니다.


K6 TPS(Transactions Per Second) 계산 방법

TPS는 초당 처리할 수 있는 트랜잭션 수를 나타내는 성능 지표로, K6에서도 간단하게 계산할 수 있습니다. 아래 스크립트를 통해 10명의 가상 유저가 1초마다 요청을 보내도록 하여 TPS를 계산해볼 수 있습니다.

javascript

코드 복사

import http from 'k6/http'; import { sleep } from 'k6'; export let options = { vus: 10, duration: '1m', }; export default function () { http.get('https://test.k6.io'); sleep(1); // 1초 간격으로 요청 전송 }

TPS 계산

  • 실행 후, 총 요청 수테스트 시간을 통해 TPS를 계산합니다.
  • 예를 들어, 1분 동안 600개의 요청이 전송되었다면, TPS는 600 / 60 = 10 TPS입니다.

K6 vs JMeter: 성능 테스트 도구 비교

K6와 JMeter는 모두 성능 테스트 도구로 널리 사용되지만, 각 도구는 다른 장단점을 갖고 있어 테스트 요구사항에 따라 선택하는 것이 좋습니다.

비교 항목K6JMeter

개발 언어 Go 기반 CLI Java 기반 GUI
스크립팅 언어 JavaScript XML 기반 설정 파일
학습 곡선 CLI 기반, JavaScript 지식 필요 GUI 제공, 비교적 쉬운 설정
성능 경량화되어 높은 성능 제공 Java 기반으로 무거울 수 있음
보고서 Grafana와 연동하여 시각화 가능 자체 리스너와 그래프 지원
CI/CD 통합 CLI 기반으로 DevOps 파이프라인에 용이 Jenkins와 같은 외부 도구 필요

K6와 JMeter 선택 팁

  • 간편한 스크립트 기반 테스트: K6는 JavaScript로 코드를 작성하므로 코드를 통한 부하 테스트에 적합합니다.
  • 시각적 인터페이스: JMeter는 GUI가 있어 초보자도 쉽게 시작할 수 있습니다.
  • 대규모 부하 테스트: K6는 경량화된 CLI 도구로 고성능 서버 테스트에 유리합니다.

Grafana와 K6 연동하여 시각화하기

K6는 기본적으로 CLI에서 결과를 제공하지만, Grafana와 연동하여 실시간으로 성능 테스트 데이터를 시각화할 수 있습니다. InfluxDB를 데이터 소스로 설정하여 Grafana에서 결과를 시각적으로 분석할 수 있습니다.

K6-Grafana 연동 설정 예제

  1. InfluxDB 설치: K6가 성능 데이터를 저장할 InfluxDB를 설치합니다.
  2. K6 실행 시 InfluxDB 출력 옵션 사용:코드 복사
  3. k6 run --out influxdb=http://localhost:8086/k6 script.js
  4. bash
  5. Grafana 대시보드 설정:
    • Grafana에서 InfluxDB를 데이터 소스로 추가하고, K6 데이터를 가져와 대시보드를 구성합니다.

이와 같은 설정을 통해 실시간으로 K6 테스트 결과를 확인할 수 있으며, TPS, 응답 시간, 에러율 등의 성능 지표를 시각화하여 더욱 직관적인 성능 분석이 가능합니다.


결론

K6는 코드 기반의 성능 테스트와 부하 테스트에 최적화된 도구로, 특히 CI/CD 환경에서 유연하게 사용할 수 있습니다. Grafana와의 통합으로 테스트 결과를 시각화할 수 있어 데이터 기반의 성능 분석이 용이합니다. JMeter와 비교할 때 고성능과 효율적인 스크립트 관리가 필요한 경우 K6가 적합하며, GUI 인터페이스와 더 다양한 프로토콜 지원이 필요할 경우 JMeter를 고려할 수 있습니다.


반응형