Tail Latency란 무엇인가
서비스의 응답 속도를 이야기할 때 흔히 평균 응답 시간을 기준으로 삼습니다. 하지만 평균은 전체 요청 중 유난히 느린 소수의 요청을 가려버리는 함정이 있습니다. Tail Latency(테일 레이턴시)는 바로 이 ‘꼬리 부분’에 해당하는, 상위 몇 퍼센트의 느린 응답 시간을 의미합니다. 이름 그대로 응답 시간을 그래프로 그렸을 때 오른쪽으로 길게 뻗은 꼬리 부분을 가리키는 개념입니다.
예를 들어 1000명의 손님이 오는 식당이 있다고 가정해봅시다. 평균 대기 시간이 5분이라 해도, 그 중 10명이 30분씩 기다렸다면 그 10명에게는 이 식당이 ‘느린 식당’으로 기억됩니다. Tail Latency는 바로 이 소수의 불만족스러운 경험을 수치로 드러내는 지표입니다.
p50, p95, p99는 무엇을 의미하나
지연 시간을 표현할 때는 평균 대신 백분위수(Percentile)를 주로 사용합니다. p99는 전체 요청을 응답 시간 순으로 정렬했을 때, 가장 느린 1%를 제외한 나머지 99%가 이 값 이하로 응답받았다는 뜻입니다. 즉 p99가 500ms라면 100번 요청 중 99번은 500ms 이내에 끝났고, 1번은 그보다 오래 걸렸다는 의미입니다.
p50: 중앙값, 절반의 사용자가 경험하는 일반적인 속도p95: 상위 5%를 제외한 지연 시간, 서비스의 안정성을 가늠하는 기준p99: 가장 느린 1%까지 고려한 값으로, 최악에 가까운 사용자 경험을 반영
평균은 극단값에 둔감하지만 p99는 이런 극단적인 사례를 그대로 드러내기 때문에, 시스템의 실제 체감 품질을 판단할 때 훨씬 유용합니다.
실무에서 p99를 중요하게 다루는 이유
대규모 트래픽을 처리하는 시스템일수록 tail latency의 영향은 커집니다. 하나의 웹 페이지가 열 개의 마이크로서비스를 순차적으로 호출한다고 가정하면, 각 서비스에서 1%의 확률로 느린 응답이 발생하더라도 전체 요청이 느려질 확률은 산술적으로 훨씬 높아집니다. 구글의 엔지니어 제프 딘이 이야기한 ‘The Tail at Scale’ 개념이 바로 이 문제를 다룹니다.
이 때문에 SRE나 백엔드 팀은 평균 응답 시간이 아니라 p95, p99를 SLO(Service Level Objective)의 핵심 지표로 삼는 경우가 많습니다. p99를 개선하면 소수의 사용자만 덕을 본다고 생각하기 쉽지만, 실제로는 재시도, 캐시 워밍, 타임아웃 튜닝, 커넥션 풀 관리 같은 시스템 전반의 병목을 찾아내는 데 큰 도움이 됩니다. 결국 tail latency를 관리한다는 것은 가장 운이 나쁜 사용자에게도 안정적인 경험을 보장하겠다는 엔지니어링의 약속인 셈입니다.