본문 바로가기
DevOps

퍼센타일 지표(p50, p90)로 보는 성능과 모니터링

by Rainbound-IT 2025. 9. 24.
반응형

웹 서비스나 API를 운영하다 보면 “응답 시간이 평균 200ms” 같은 말을 흔히 합니다. 하지만 **평균값(mean)**만으로는 사용자 경험을 제대로 설명할 수 없습니다. 실제로는 일부 요청이 아주 느릴 수 있고, 그 극단적인 요청들이 서비스 만족도를 크게 떨어뜨리기도 합니다.
이때 자주 쓰이는 지표가 바로 **퍼센타일(percentile)**입니다. 그중에서도 가장 많이 언급되는 것이 p50, p90, p95, p99입니다.


1. 퍼센타일이란 무엇인가?

퍼센타일은 데이터를 정렬했을 때 특정 비율에 해당하는 지점을 말합니다.

  • p50 (50th percentile): 중앙값(median). 절반의 요청이 이 값보다 빠르고, 절반은 더 느립니다.
  • p90 (90th percentile): 요청 중 90%는 이 값보다 빠르고, 10%는 더 느립니다.
  • p95, p99: 상위 5%, 1%의 느린 요청을 드러냅니다.

👉 즉, 퍼센타일 지표는 **평균값이 놓치는 분포의 꼬리 부분(tail latency)**을 보여줍니다.


2. 성능 테스트에서의 p50, p90

성능 테스트(JMeter, Locust, k6 등)를 할 때는 수많은 요청 응답 시간이 쌓입니다.
예를 들어, 1,000건의 요청을 보냈을 때 결과가 이렇게 나올 수 있습니다:

  • 평균(Mean): 200ms
  • p50: 180ms → 절반의 요청은 180ms 이내
  • p90: 400ms → 대부분은 400ms 이내
  • p99: 1,200ms → 소수 요청은 1.2초 이상

평균만 보면 “200ms니까 괜찮네”라고 착각할 수 있습니다. 그러나 실제로는 일부 요청이 훨씬 느리다는 사실을 p90, p99가 보여줍니다.
그래서 성능 목표(SLA/SLO)를 퍼센타일 기준으로 설정하는 것이 일반적입니다.
예: “p95 응답 시간이 500ms 이하여야 한다.”


3. 모니터링에서의 p50, p90

운영 환경에서는 실시간으로 쌓이는 수많은 요청을 지속적으로 관찰해야 합니다.

  • p50은 “일반적인 사용자 경험”을 보여줍니다.
  • p90/p95는 “대부분의 사용자 경험”을 보여줍니다.
  • p99는 “극소수이지만 문제가 되는 요청”을 보여줍니다.

예를 들어 모니터링 대시보드에서:

  • p50 = 120ms
  • p90 = 350ms
  • p99 = 1,200ms

이 수치를 보면, 대부분은 빠르지만 일부 사용자(상위 1~10%)는 여전히 불편을 겪고 있다는 것을 알 수 있습니다.

특히 SRE(Site Reliability Engineering) 관점에서는 SLA/SLO를 “p99 기준”으로 정의하는 경우가 많습니다. 예: “99% 요청은 300ms 이내여야 한다.”


4. 실무 적용 방법

  • 성능 테스트 툴: JMeter, Locust, k6는 자동으로 p50, p90, p95, p99를 계산해 리포트에 표시합니다.
  • Prometheus + Grafana:
  •  
    histogram_quantile(0.5, rate(http_request_duration_seconds_bucket[5m])) # p50 histogram_quantile(0.9, rate(http_request_duration_seconds_bucket[5m])) # p90
  • APM 툴 (Datadog, New Relic, Dynatrace 등): 퍼센타일 지표를 기본적으로 제공합니다.

CI/CD 파이프라인에 성능 게이트를 두고, p90 < 400ms 같은 조건을 넣어 빌드를 실패 처리하기도 합니다.


5. 퍼센타일 지표의 장점과 한계

  • ✅ 장점:
    • 평균이 놓치는 사용자 경험을 드러냄
    • SLA/SLO 정의에 적합
    • 꼬리 지연(tail latency) 문제를 조기 파악 가능
  • ⚠️ 한계:
    • 계산 방식에 따라 비용이 클 수 있음 (특히 p99)
    • 극소수 이상치(outlier)와 실제 의미 있는 지연을 구분해야 함
    • 단일 퍼센타일 값만으로는 분포 전체를 설명하지 못함

따라서 평균, 퍼센타일, 에러율 등을 함께 보아야 전체적인 성능 상태를 이해할 수 있습니다.


6. 결론

  • p50: 보통 사용자 경험
  • p90/p95: 대부분 사용자 경험
  • p99: 극소수지만 중요한 사용자 경험

성능 테스트에서는 퍼센타일을 기준으로 SLA/SLO를 정의해야 하고,
운영 모니터링에서는 평균보다 퍼센타일 지표를 중심으로 문제를 조기에 파악해야 합니다.

👉 정리하면, 평균은 참고용, 퍼센타일은 필수입니다.
p50, p90, p99를 모니터링하면 서비스 품질을 한층 더 명확하게 볼 수 있고, 고객 만족도 관리에도 큰 도움이 됩니다.

반응형

댓글