부하 성능 테스트
부하 성능 테스트 (Load performance testing)
부하 성능 테스트를 사용하면 코드 변경이 애플리케이션 백엔드 성능에 미치는 영향을 측정할 수 있어요. GitLab은 k6를 사용해 API나 웹 컨트롤러 같은 애플리케이션 엔드포인트에 부하를 시뮬레이션하고, 결과를 load-performance.json이라는 파일로 출력해요.
웹 페이지가 브라우저에서 어떻게 렌더링되는지를 측정하는 브라우저 성능 테스트와 달리, 부하 성능 테스트는 서버 쪽을 대상으로 하며 부하 상태에서 응답 시간과 처리량을 평가할 수 있어요.
결과가 머지 리퀘스트에 직접 표시되므로, 리뷰 과정에서 성능 회귀를 잡아낼 수 있어요.
출처: 문서
본문
머지 리퀘스트의 부하 성능 결과
.gitlab-ci.yml 파일에 부하 성능 리포트 아티팩트를 생성하는 잡을 정의하세요. GitLab이 이 리포트를 확인하고 소스 브랜치와 대상 브랜치 사이의 주요 부하 성능 지표를 비교한 뒤 머지 리퀘스트에 결과를 표시해요.
머지 리퀘스트 위젯에 표시되는 주요 지표는:
- Checks: k6 테스트에 구성된 checks의 통과율(%).
- TTFB P90: 응답 수신이 시작되기까지 걸린 시간의 90번째 백분위수. Time to First Byte(TTFB)라고도 해요.
- TTFB P95: TTFB의 95번째 백분위수.
- RPS: 테스트가 달성한 초당 평균 요청 수(RPS).
위젯은 대상 브랜치에서 잡이 최소 한 번 실행되기 전까지는 표시되지 않아요.
부하 성능 테스트 구성하기
GitLab에 포함된 Verify/Load-Performance-Testing.gitlab-ci.yml 템플릿을 사용해 애플리케이션에 대해 k6 부하 테스트를 실행하세요.
전제 조건:
- Docker-in-Docker 워크플로우처럼 Docker 컨테이너를 실행하도록 구성된 GitLab Runner.
- 부하 테스트용으로 구성된 사전 프로덕션 테스트 환경. 자세한 내용은 부하 테스트 동시 사용자 계산을 참고하세요.
- 프로젝트 저장소에 있는 k6 테스트 파일. 가이드는 첫 k6 테스트 작성을 참고하세요.
부하 성능 테스트를 구성하려면 .gitlab-ci.yml 파일에 다음을 추가하세요:
include:
template: Verify/Load-Performance-Testing.gitlab-ci.yml
load_performance:
variables:
K6_TEST_FILE: <PATH TO K6 TEST FILE IN PROJECT>
GitLab이 k6 테스트를 실행하고 결과를 부하 성능 리포트 아티팩트로 저장하는 load_performance 잡을 만들어요. 항상 최신 아티팩트가 사용돼요. GitLab Pages가 활성화되어 있다면 브라우저에서 리포트를 직접 볼 수 있어요.
CI/CD 변수로 잡을 맞춤 설정할 수 있어요:
| Variable | Default | Description |
|---|---|---|
K6_IMAGE |
grafana/k6 |
사용할 Docker 이미지. 버전을 제어하지는 않아요. |
K6_VERSION |
0.54.0 |
Docker 이미지의 버전. |
K6_TEST_FILE |
none | 프로젝트 저장소의 k6 테스트 파일 경로. |
K6_OPTIONS |
none | 추가 k6 옵션. 자세한 내용은 k6 옵션 참조를 참고하세요. |
K6_DOCKER_OPTIONS |
none | docker run에 전달되는 추가 옵션. 예: 환경 변수를 k6 컨테이너로 전달하는 --env-file. |
예를 들어 테스트 기간을 재정의하려면:
include:
template: Verify/Load-Performance-Testing.gitlab-ci.yml
load_performance:
variables:
K6_TEST_FILE: <PATH TO K6 TEST FILE IN PROJECT>
K6_OPTIONS: '--duration 30s'
이 템플릿은 Kubernetes 클러스터에서 동작하지 않아요. 대신
Jobs/Load-Performance-Testing.gitlab-ci.yml을 사용하세요.
대규모 k6 테스트를 실행한다면 GitLab Runner 인스턴스가 부하를 처리할 수 있는지 확인하세요. 기본 공유 GitLab.com 러너는 대부분의 대규모 k6 테스트에 사양이 부족할 가능성이 커요. 자세한 내용은 k6의 대규모 테스트 실행 가이드를 참고하세요.
리뷰 앱(review apps)용 부하 성능 테스트 구성하기
전제 조건:
load_performance잡은 동적 환경이 시작된 후에 실행되어야 해요.
리뷰 앱용 부하 성능 테스트를 구성하려면 동적 URL을 .env 파일에 캡처하고 K6_DOCKER_OPTIONS를 사용해 k6 컨테이너에 전달하세요. 그러면 k6가 표준 JavaScript로 테스트 스크립트에서 파일의 환경 변수를 사용할 수 있어요. 예: http.get(${__ENV.ENVIRONMENT_URL}).
예를 들면:
stages:
- deploy
- performance
include:
template: Verify/Load-Performance-Testing.gitlab-ci.yml
review:
stage: deploy
environment:
name: review/$CI_COMMIT_REF_SLUG
url: http://$CI_ENVIRONMENT_SLUG.example.com
script:
- run_deploy_script
- echo "ENVIRONMENT_URL=$CI_ENVIRONMENT_URL" >> review.env
artifacts:
paths:
- review.env
rules:
- if: $CI_COMMIT_BRANCH
load_performance:
dependencies:
- review
variables:
K6_DOCKER_OPTIONS: '--env-file review.env'
rules:
- if: $CI_COMMIT_BRANCH
더 알아보기
다음으로는 브라우저 성능 테스트 문서와 부하 성능 리포트 아티팩트를 함께 보면, 프런트엔드와 백엔드 성능 테스트를 모두 구성하는 방법을 익힐 수 있어요.
