API 엔드포인트(https://api.colla.so/api/v1/users/status)에%EC%97%90) 대한 부하 테스트를 수행합니다. 이 시나리오는 실제 사용자 계정으로 로그인한 후 인증 토큰을 획득하여 API를 호출하는 방식으로 실제 환경과 유사한 부하를 시뮬레이션합니다.

테스트 시나리오 개요

구성 요소 설명
테스트 대상 https://api.colla.so/api/v1/users/status API
사용자 수 최대 500명의 실제 이메일 계정 (테스트에서는 500개로 제한)
인증 방식 로그인을 통한 Bearer 토큰 인증
테스트 지속 시간 총 7분 30초 (준비 단계 제외)
모니터링 지표 응답 시간, 오류율, 요청 수

부하 단계별 시나리오

테스트는 다음과 같은 단계로 실행됩니다:

단계 지속 시간 가상 사용자 수 목적
워밍업 30초 0 → 30 시스템 예열
점진적 증가 1분 30 → 100 부하 점진적 증가
중간 부하 2분 100 → 200 중간 수준의 부하 적용
높은 부하 1분 200 → 300 높은 부하로 전환
부하 유지 2분 300 유지 최대 부하 상태 유지
점진적 감소 1분 300 → 0 부하 감소 및 정상화

성능 측정 지표

테스트 중에는 다음과 같은 사용자 정의 메트릭을 수집합니다:

메트릭 유형 목적
response_time Trend API 응답 시간 추적
error_rate Rate 요청 실패율 측정
request_count Counter 총 요청 수 카운트

테스트 준비 과정

테스트 시작 전 준비 단계에서는:

  1. 모든 사용자에 대해 로그인 API를 호출하여 인증 토큰을 획득합니다.
  2. 서버 부담을 줄이기 위해 배치 크기 10으로 나누어 요청을 처리합니다.
  3. 배치 사이에 2초의 지연 시간을 두어 서버 부하를 분산시킵니다.
  4. 모든 로그인이 완료된 후 5분(300초)의 안정화 시간을 허용합니다.

테스트 실행 패턴

각 가상 사용자(VU)는:

  1. 할당된 사용자 ID와 인증 토큰을 사용합니다.
  2. User Status API를 호출합니다.
  3. 응답 시간과 성공 여부를 기록합니다.
  4. 0.3초에서 1.2초 사이의 랜덤한 시간 동안 대기한 후 다음 요청을 실행합니다.

개선 전

부하 테스트 결과 요약 (Load Test Results Summary)

테스트 결과 분석 (Test Results Analysis)

이 부하 테스트는 높은 성공률(100%)과 낮은 오류율(0%)을 보여주며 시스템이 안정적으로 동작하고 있음을 나타냅니다. 평균 응답 시간은 1.52초로 양호하지만, 최대 응답 시간이 20.83초로 꽤 높게 나타났습니다. 90%의 요청은 4.79초 내에 응답을 받았으며, 이는 대부분의 사용자가 적절한 응답 시간을 경험하고 있음을 의미합니다.

시스템은 초당 약 35개의 요청을 처리했으며, 최대 300개의 가상 사용자를 지원할 수 있습니다. 전체적으로 이 시스템은 테스트된 부하 수준에서 안정적으로 동작하고 있지만, 일부 요청에서 높은 최대 응답 시간이 관찰되었으므로 이 부분에 대한 최적화를 고려해볼 수 있습니다.

기본 지표 (Basic Metrics)

지표 (Metric) 결과 (Result)
성공률 (Success Rate) 100.00% (✓ 72932, ✗ 0)
데이터 수신량 (Data Received) 77 MB (73 kB/s)
데이터 송신량 (Data Sent) 14 MB (13 kB/s)
오류율 (Error Rate) 0.00% (✓ 0, ✗ 36466)
요청 수 (Request Count) 36466 (34.53/s)
가상 사용자 (VUs) 1 (최소 0, 최대 300)

HTTP 요청 성능 (HTTP Request Performance)

지표 (Metric) 평균 (avg) 최소 (min) 중간값 (med) 최대 (max) 90% 95%
요청 차단 시간 (Request Blocked) 455.47µs 1µs 8µs 1.26s 12µs 15µs
연결 시간 (Connecting) 74.17µs 0s 0s 74.26ms 0s 0s
요청 지속 시간 (Duration) 1.52s 126µs 364.03ms 20.83s 4.79s 6.62s
응답 수신 시간 (Receiving) 221.53µs 10µs 104µs 40.61ms 269µs 686µs
요청 전송 시간 (Sending) 38.27µs 3µs 27µs 29.53ms 44µs 59µs
TLS 핸드셰이킹 (TLS Handshaking) 172.61µs 0s 0s 73.78ms 0s 0s
대기 시간 (Waiting) 1.52s 0s 363.67ms 20.83s 4.79s 6.62s
반복 지속 시간 (Iteration Duration) 2.26s 329.76ms 1.26s 21.29s 5.51s 7.35s
응답 시간 (Response Time) 1516.59ms 20ms 356ms 20837ms 4814ms 6659ms

Grafana Snapshots

민감 정보는 마스킹되어 확인할 수 없습니다.

JVM

Instance 1

Instance 2