웹 서비스나 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를 모니터링하면 서비스 품질을 한층 더 명확하게 볼 수 있고, 고객 만족도 관리에도 큰 도움이 됩니다.
'DevOps' 카테고리의 다른 글
| 클라우드 계정이 다른 개발 / 운영 환경의 CIDR 범위 설정 (0) | 2025.10.10 |
|---|---|
| [kafka] 토픽을 파티션으로 나누는 이유 (0) | 2025.09.29 |
| isito 와 cilium path 정책 차이 (0) | 2025.09.24 |
| istio vs cilium 정책 차이 (0) | 2025.09.24 |
| GitHub Composite Action + ArgoCD: GitOps CI/CD 파이프라인 완성하기 (0) | 2025.09.08 |
댓글