본문으로 건너뛰기

성공률이 장애를 숨기는 게이트웨이

HTTP 200 성공률 대신 deadline 안에 도착한 유효 답변 수를 추적해야 게이트웨이 과부하와 느린 failover를 포착할 수 있습니다.

이 요약은 AI가 원문을 분석해 생성했습니다. 정확한 내용은 원문 기준으로 확인하세요.

TL;DR

작성자는 모델 게이트웨이에서 admission control과 failover를 제거하거나 잘못 구현했을 때 성공률이 실제 사용자 경험을 숨기는 과정을 부하 테스트로 확인했습니다. 32개 요청을 무제한으로 통과시키자 모두 HTTP 200을 반환했지만 31개가 700ms deadline 뒤에 도착했고, 동시성 8에서 제한한 뒤 초과 요청에 빠른 429를 보내자 6개의 유효 응답을 확보했습니다. 느린 백엔드가 3초를 소비하는 failover 테스트에서는 정상 백엔드가 한 번도 호출되지 않았으며, 요청 전체 deadline의 60%만 현재 백엔드에 배정하고 나머지를 전환에 예약하자 제시간 응답이 0건에서 8건으로 늘었습니다. 따라서 핵심 운영 지표는 성공률이 아니라 사용자가 기다리는 동안 도착한 답변 수이며, 응답 필드와 warning, 디스크 flush 같은 세부 경로도 함께 검증해야 합니다.

실용적 조언

  • 동시성 부하 테스트에서 HTTP 200 비율과 함께 호출자의 deadline 안에 도착한 유효 답변 수를 별도 지표로 기록해야 합니다.
  • 처리량 곡선에서 동시성 증가에 따른 latency 상승과 tok/s 정체가 시작되는 knee를 찾아 admission limit으로 사용해야 합니다.
  • Retry와 failover timeout을 백엔드별 고정값으로만 두지 말고 요청 전체 deadline과 남은 시간을 기준으로 계산해야 합니다.
  • 응답 본문뿐 아니라 reasoning model의 답변 필드, worker thread warning, 디스크 flush 시간까지 검증해 성공 판정과 실제 결과가 일치하는지 확인해야 합니다.

섹션별 상세

01
작성자는 게이트웨이의 admission limit을 제거하면 모든 요청이 HTTP 200을 받아 성공률이 100%로 보이지만, 32개 동시 호출 중 31개가 호출자의 700ms 대기 한도를 넘긴다고 측정했습니다. 제한을 8로 두고 초과 요청에 즉시 429를 반환하자 24개는 밀리초 안에 거절되고 6개가 사용 가능한 답변으로 도착했습니다. 성공률은 100%에서 25%로 낮아졌지만 유효 처리량은 6배가 되었고, 동시성 8에서 189 tok/s에서 433 tok/s로 증가한 뒤 거의 평탄해지는 knee가 관찰됐습니다.
02
작성자는 백엔드가 죽는 대신 3초 동안 느리게 응답하도록 fault를 심어 failover 동작을 확인했습니다. 게이트웨이는 8건의 성공을 기록했지만 모두 3초에 도착했고, 1.5초 deadline 안에 다른 정상 백엔드를 호출한 요청은 하나도 없었습니다. 원인은 retry budget이 시도 횟수와 백엔드별 timeout만 세고 요청 전체의 남은 시간을 보지 않았기 때문이며, 남은 시간의 최대 60%만 현재 백엔드에 쓰고 나머지를 전환 대상에 예약하도록 고친 뒤 제시간 응답이 0건에서 8건으로 늘고 p50이 3001ms에서 1046ms로 줄었습니다.
03
작성자는 로그와 관측 지표가 두 fault에서 모두 failover가 작동하는 것처럼 보였다고 지적했습니다. 성공 여부만 확인하는 관측 체계에서는 늦은 응답을 사용자가 받지 못했다는 사실과 정상 백엔드가 전혀 호출되지 않았다는 사실이 사라집니다. 추가 점검에서는 reasoning model의 답변이 다른 필드에 담겨 빈 문자열처럼 보였고, worker thread의 동시성 오류가 warning으로만 남았으며, 세 번의 DB quota read는 0.146ms로 전체의 4%에 불과하고 디스크에 metering row를 flush하는 작업이 2.999ms에서 0.230ms로 줄어드는 주요 병목으로 드러났습니다.

용어 해설

요청 수락 제어(Admission Control)
게이트웨이가 백엔드로 넘길 요청 수를 제한해 처리 가능한 동시성만 수락하는 방식입니다. 한도를 넘은 요청은 빠르게 거절해 보이지 않는 백엔드 대기열과 타임아웃 낭비를 줄이고, 실제로 사용 가능한 응답 수를 높이는 데 목적이 있습니다.
유효 처리량(Goodput)
전체 성공 응답 수가 아니라 사용자가 제한 시간 안에 실제로 받은 유효한 결과의 처리량입니다. 이 글에서는 32개 요청 중 늦게 도착한 응답을 제외하고, 호출자가 아직 기다리는 동안 도착한 답변 수를 서비스 성능의 기준으로 삼습니다.
장애 전환(Failover)
현재 백엔드가 응답하지 못할 때 다른 백엔드로 요청을 넘기는 동작입니다. 단순히 백엔드별 시도 횟수와 고정 타임아웃만 관리하면 느린 백엔드가 요청의 남은 시간을 모두 소진할 수 있으므로, 요청 전체 deadline 안에 전환 대상의 실행 시간도 예약해야 합니다.
부하 감축(Load Shedding)
시스템이 처리 한계를 넘는 요청을 대기시키지 않고 일부를 의도적으로 거절하는 운영 방식입니다. 빠른 429 응답으로 초과 부하를 제거하면 성공률은 낮아질 수 있지만, 지연 시간 안에 도착하는 유효 응답과 전체 서비스의 goodput은 오히려 높아질 수 있습니다.
관측 가능성(Observability)
시스템 내부 상태를 로그와 지표 같은 외부 신호로 파악하는 능력입니다. 성공 여부만 기록하면 늦게 도착한 응답이나 실제로 호출되지 않은 정상 백엔드를 놓칠 수 있으므로, deadline 안에 도착한 응답 수와 백엔드별 전환 결과까지 측정해야 합니다.

언급된 리소스

AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

원문 발행 2026. 08. 25.수집 2026. 08. 25.출처 타입 REDDIT

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.