모종닷컴

K6 소개 본문

Tools

K6 소개

모종 2023. 7. 8. 20:41
반응형

간단하게 애플리케이션 성능 테스트를 하기 위해 사용해 본 툴입니다. 다른 Jmeter, vegeta, ngrinder 등 성능 테스트를 위한 많은 툴들이 있지만 다양한 툴들을 사용해보고 싶은 니즈가 있어서 k6를 한번 사용해 봤습니다.
오늘은 k6의 대한 소개를 먼저 하려고 합니다. https://k6.io/docs/ 의 소개를 그저 번역정도만 한 내용일 거라 가벼운 마음으로 흝어보면 좋을 것 같습니다.

K6가 뭡니까?

  • 엔지니어링 팀의 성능 테스트를 쉽고 생산적으로 수행할 수 있는 무료 오픈 소스 부하 테스트 도구.
  • 전체적으로 개발자 중심적이며 확장성 있는 특징을 지니고 있다
  • 시스템의 신뢰성과 성능을 테스트하고 성능 저하 및 문제를 조기에 발견할 수 있다

핵심 기능

  • CLI에서 개발자에 친근한 api를 사용할 수 있다
  • 로컬 및 원격 모듈에서 자바스크립트로 스크립팅할 수 있다
  • 검증 및 임계값 설정으로 목표 지향적이고 자동화 친화적인 부하 테스트를 할 수 있다.

유즈케이스

개발자, QA 엔지니어, SDET(Software Design Engineer in Test), SRE(Site Reliability Engineering) 이 주 사용층이다.

  • Load testing
    k6는 최소한의 자원 소비를 위해 최적화되어 있으며 부하테스트 실행을 위해 설계되어 있습니다
  • Browser testing
    "k6 browser"를 통해 브라우저 기반 성능 테스트를 실행할 수도 있습니다
  • Chaos and resilience testing
    chaos 실험의 일부로 트래픽을 시뮬레이션하거나 테스트에서 트래픽을 트리거 시킬 수 있습니다.
  • Performance and synthetic monitoring
    적은 부하로 테스트를 자동화하고 자주 트리거하도록 스케줄 하여 운영 환경의 성능과 가용성을 지속적으로 검증할 수 있습니다
SDET와 SRE?
SDET(Software Design Engineer in Test)
- 테스팅에 사용되는 도구와 프레임워크를 설계하고 개발하는 역할
- 코드를 작성하고 테스트 자동화 스크립트를 개발하며 때로는 제품 코드의 버그를 수정하기도 함.
- 소프트웨어 개발 사이클의 초기 단계에 참여하여 테스트 자동화를 통해 개발 과정을 효율적으로 만드는데 중점을 둠.

SRE
- DevOps 원칙을 실제 업무에 적용하는 구체적인 방법론 중 하나
- 기술을 사용하여 시스템의 신뢰성과 효율성을 향상하는 것을 목표
- 시스템의 성능을 최적화하고, 서비스의 지속 가능성과 재해 복구를 보장하며, 문제를 빠르게 진단하고 해결하는 역할
- 효율성을 높이기 위해 자동화를 위해 노력하며, 종종 코드를 작성하여 운영 태스크를 자동화

Load Testing Manifesto

성능 및 부하 테스트 영역에서 오랜 세월을 깊은 수렁에서 보내면서 얻은 결과하고 합니다. 올바른 방향으로 성능 테스트를 수행하는 데 도움이 되는 지침으로 사용할 수 있도록 k6는 개발되어 왔다고 합니다. 아래는 선언문 내용입니다

  • 간단한 테스트가 테스트를 하지 않는 것보다 낫다
  • 부하 테스트는 목표 지향적이어야 한다
  • 개발자에 의해 부하 테스트가 되어야 한다
  • 개발자 경험은 굉장히 중요하다
  • 부하 테스트는 프로덕션 환경 전에 이루어져야 한다.

K6가 하지 않는 것 혹은 하지 못하는 것

  • k6는 자바스크립트로 스크립팅할 수 있는 고성능 부하 테스트 툴
  • 몇 가지의 트레이드오프가 존재함.

브라우저에서 기본적으로 실행되지 않는다

  • k6는 브라우저가 하는 것처럼 웹 페이지를 렌더링 하지 않음.
  • 브라우저는 상당한 시스템 리소스를 사용하는데 브라우저를 건너뛰면 단일 컴퓨터 내에서 더 많은 로드를 실행할 수 있음.
  • 하지만 k6 browser를 사용하면 실제 브라우저와 상호 작용하고 k6 테스트의 일환으로 프론트엔드 매트릭을 수집할 수 있음.

NodeJS에서 실행되지 않는다

  • 일반적으로 자바스크립트는 고성능에 적합한 언어는 아님
  • 최대의 성능을 위해 도구 자체는 Go로 작성하였고, 자바스크립트 런타임 모듈을 내장하여 테스트 스크립팅을 쉽게 수행할 수 있게 함
반응형

'Tools' 카테고리의 다른 글

[k6] Visualization  (0) 2023.07.22
[k6] Quick Start  (0) 2023.07.16