Rate limit 은 처벌이 아니라 budget 이야 — TPM (tokens per minute) 과 RPM (requests per minute) 둘 다. 모든 호출자에게 API 가 동작하도록 잡아주는 contract. 우회하려 들지 말고 limit 안에서 build 해.
Header 가 답을 알려줘
매 성공 응답에 x-ratelimit-remaining-requests, x-ratelimit-remaining-tokens header 가 와. 좋은 client 는 429 터지기 전에 이걸 읽고 미리 backoff 해. 20% 밑으로 떨어지면 concurrency 절반, 80% 위로 회복하면 두 배 — adaptive concurrency.
429 났을 땐 — exponential backoff with jitter
Base 1 초, factor 2, jitter ±20%, max 5 retry. Retry-After header 있으면 그 값 우선. 100 req/min 넘는 client 한테는 jitter 필수 — 동시에 retry 하면 thundering herd 터져.