K6 - 성능, 부하 테스트 도구
- K6는 성능 테스트와 부하 테스트를 자동화하는 도구이다. 웹 애플리케이션이나 API에 요청을 보내고, 요청에 대한 응답시간을 측정하여 성능을 평가한다.
- 주요기능
- HTTP 요청을 시뮬레이션하여 부하 테스트 수행
- 시스템의 응답 시간, 실패율, 리소스 사용률 등을 모니터링
- 성능 테스트 스크립트를 작성하고 다양한 부하 시나리오를 테스트
- 사용이유: 실제 사용자의 트래픽을 시뮬레이션하고, 시스템이 부하를 받을 때 어떻게 반응하는지 확인할 수 있다. ex) 사용자 수가 증가할 때 서버가 얼마나 잘 작동하는지, 서버의 응답 시간은 얼마나 빨라지는지 등을 측정 할 수 있다.
Prometheus - 메트릭 수집 및 저장 도구
- Prometheus는 시스템 및 애플리케이션에서 메트릭(수치데이터, 측정값)을 수집하고 이를 저장하는 오픈 소스 시스템 모니터링 도구이다.
- 주요기능
- 메트릭 수집: Prometheus는 여러 서비스나 애플리케이션에서 메트릭을 수집한다. 예를 들어, k6는 성능 테스트 중에 다양한 메트릭을 Prometheus에 전송할 수 있다.
- 쿼리 언어 (PromQL): Prometheus는 PromQL이라는 쿼리 언어를 사용해 수집한 메트릭을 쿼리하고, 원하는 데이터에 대한 통계를 계산할 수 있다.
- 데이터 저장: 수집된 메트릭은 시간에 따라 저장되며, 다양한 종류의 데이터를 저장할 수 있습니다. 예를 들어, API의 응답 시간, 시스템의 CPU 사용량, 메모리 사용량 등이 메트릭으로 저장된다.
- 사용이유: k6에서 발생하는 성능 테스트 메트릭을 수집하고 저장하여, 나중에 분석하거나 시각화 할수 있도록 한다. 또한, Prometheus는 다른 시스템의 메트릭도 수집하고 모니터링 할 수 있다.
k6만 사용할 경우 테스트를 실행하고 결과를 시각할 수있지만 메트릭을 지속적으로 저장하거나 장기적인 추적을 하는데에는 한계가 있다. 즉, 과거의 데이터를 비교하거나 장기적인 트렌드를 추적하기 어렵다는 뜻이다.
Grafana - 데이터 시각화 도구
- Grafana는 메트릭 데이터를 시각화하는 도구이다. Prometheus와 같은 메트릭 수집 시스템과 연결되어, 수집된 데이터를 대시보드 형태로 시각적으로 표시할 수 있다.
- 주요기능
- 대시보드: 수집된 메트릭을 그래프나 차트로 시각화하여 모니터링할 수 있다. 예를 들어, API의 응답 시간, 실패율, 시스템의 리소스 사용률 등을 실시간으로 확인할 수 있다.
- 알림: 특정 임계값을 넘어서면 알림을 받을 수 있도록 설정할 수 있다. 예를 들어, 응답 시간이 1초 이상이면 알림을 받을 수 있도록 설정할 수 있다.
- 사용자 정의 대시보드: 메트릭을 자유롭게 시각화하여 자신만의 대시보드를 만들 수 있다.
- 사용이유: Prometheus에서 수집한 메트릭을 시각적으로 분석하여 성능 테스트 결과나 시스템 상태를 쉽게 이해할 수 있도록 도와준다. 여러 메트릭을 한 눈에 보고, 문제가 발생했을 때 빠르게 원인 파악이 가능하다.
연계
- k6에서 실행한 테스트의 메트릭을 Prometheus로 수집하고, 이를 Grafana에서 시각화하여 결과를 분석 할 수 있다.
- k6는 테스트를 실행한 후, 그 결과를 실시간으로 출력하고 로그나 파일로 저장할 수 있지만, 장기적인 데이터 저장은 기본적으로 지원하지 않는다.
- k6가 테스트를 끝내면 그 결과는 그 순간에만 존재하고 이후에는 사라진다.
그러므로 Prometheus와 같은 도구와 연계가 필요하다.
k6 스크립트 설정
- k6의 스크립트는 성능 테스트와 부하 테스트를 정의하기 위해 작성된다. JavaScript로 작성되며, 테스트하고자 하는 API 엔드포인트, 요청의수, 가상 사용자(Virtual Users, VUs)수, 테스트 지속시간 등을 설정할 수 있다.