Retry with Backoff란?
일시적 장애(네트워크 지연, 503 등)는 재시도로 회복 가능하지만 즉시 재시도는 서버를 더 힘들게 한다. 간격을 점차 늘리는 게 정답.
공식
delay = base * (2 ^ attempt) + random_jitter
// 예: 1s, 2s, 4s, 8s, 16s ...
Jitter가 중요한 이유
수백 클라이언트가 동시에 실패하고 "정확히 2초 후" 일제히 재시도하면 서버가 또 죽는다 (Thundering Herd). 랜덤값을 섞어 분산시킴.
재시도하면 안 되는 에러
4xx 계열(400, 401, 403, 404). 422. 멱등하지 않은 POST 기본.