Rate limit 은 벌이 아니라 API 용량을 나눠 쓰기 위한 예산이야. 분당 token 수인 TPM 과 분당 요청 수인 RPM 이 따로 적용돼. 모든 사용자가 API 를 안정적으로 쓸 수 있게 만든 규칙이니 우회하려 하지 말고 그 범위 안에서 설계해.
응답 header 를 먼저 읽어
성공한 응답에도 x-ratelimit-remaining-requests 와 x-ratelimit-remaining-tokens header 가 들어와. 429 오류가 난 뒤에야 멈추지 말고, 남은 양을 읽어 미리 속도를 낮춰. 20% 아래로 내려가면 동시 요청 수를 절반으로 줄이고, 80% 위로 회복하면 다시 늘리는 식으로 조절할 수 있어.
429 에는 jitter 를 섞은 지수 backoff
1 초에서 시작해 대기 시간을 두 배씩 늘리고, ±20% jitter 를 섞어 최대 다섯 번 다시 시도해. Retry-After header 가 있으면 그 값을 우선해. 분당 100 건 넘게 보내는 client 라면 jitter 가 특히 중요해. 모든 요청이 동시에 다시 몰리면 thundering herd 가 생기거든.