부하 성능 테스트
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
부하 성능 테스트를 사용하여 코드 변경이 애플리케이션 백엔드 성능에 미치는 영향을 측정하세요. 웹 페이지가 브라우저에서 어떻게 렌더링되는지 측정하는 브라우저 성능 테스트와 달리, 부하 성능 테스트는 서버 측을 대상으로 하며 부하 상태에서 응답 시간과 처리량을 평가할 수 있습니다.
부하 성능 테스트를 사용하여 코드 변경이 애플리케이션 백엔드 성능에 미치는 영향을 측정하세요. GitLab은 k6를 사용하여 API 및 웹 컨트롤러와 같은 애플리케이션 엔드포인트에 부하를 시뮬레이션하고 결과를 load-performance.json이라는 파일에 출력합니다.
웹 페이지가 브라우저에서 어떻게 렌더링되는지 측정하는 브라우저 성능 테스트와 달리, 부하 성능 테스트는 서버 측을 대상으로 하며 부하 상태에서 응답 시간과 처리량을 평가할 수 있습니다.
결과는 머지 리퀘스트에 직접 표시되므로 리뷰 프로세스의 일부로 성능 저하를 발견할 수 있습니다.
머지 리퀘스트에서의 부하 성능 결과#
.gitlab-ci.yml 파일에서 부하 성능 보고서 아티팩트를 생성하는 job을 정의합니다.
GitLab은 이 보고서를 확인하고, 소스와 대상 브랜치 간에 주요 부하 성능 메트릭을 비교한 다음 머지 리퀘스트에 결과를 표시합니다.

머지 리퀘스트 위젯에 표시되는 주요 메트릭은:
- Checks: k6 테스트에 구성된 검사의 통과율 백분율.
- TTFB P90: 응답 수신 시작까지 걸린 시간의 90번째 백분위수, 즉 첫 번째 바이트까지의 시간(TTFB).
- TTFB P95: TTFB의 95번째 백분위수.
- RPS: 테스트가 달성할 수 있는 평균 초당 요청(RPS) 속도.
위젯은 대상 브랜치에서 job이 최소 한 번 실행된 후에만 표시됩니다.
부하 성능 테스트 구성#
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: TO K6 TEST FILE IN PROJECT>
GitLab은 k6 테스트를 실행하고 결과를 부하 성능 보고서 아티팩트로 저장하는 load_performance job을 생성합니다.
항상 사용 가능한 최신 아티팩트가 사용됩니다. GitLab Pages가 활성화된 경우 브라우저에서 직접 보고서를 볼 수 있습니다.
CI/CD 변수로 job을 사용자 정의할 수 있습니다:
| 변수 | 기본값 | 설명 |
|---|---|---|
K6_IMAGE |
grafana/k6 |
사용할 Docker 이미지. 버전은 제어하지 않습니다. |
K6_VERSION |
0.54.0 |
Docker 이미지 버전. |
K6_TEST_FILE |
없음 | 프로젝트 저장소의 k6 테스트 파일 경로. |
K6_OPTIONS |
없음 | 추가 k6 옵션. 자세한 내용은 k6 옵션 참조를 참조하세요. |
K6_DOCKER_OPTIONS |
없음 | docker run에 전달할 추가 옵션(예: k6 컨테이너에 환경 변수를 전달하기 위한 --env-file). |
예를 들어, 테스트 기간을 재정의하려면:
include:
template: Verify/Load-Performance-Testing.gitlab-ci.yml
load_performance:
variables:
K6_TEST_FILE: 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 지침을 참조하세요.
리뷰 앱에서의 부하 성능 테스트 구성#
사전 요구 사항:
load_performancejob은 동적 환경이 시작된 후 실행되어야 합니다.
리뷰 앱에서 부하 성능 테스트를 구성하려면 동적 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
