Retries mask transient failures but hide systemic ones; backoff trades latency for stability; pair with circuit breaker.
Разбор
- Retries mask transient, hide systemic. Broken dependency looks «slow» not «down». Circuit breaker after N failures — cooldown.
- Backoff trades latency for stability. User-facing retry budget short; long backoff for background/idempotent work.
- When NOT retry: non-idempotent writes without key; 4xx client bugs.
- Client vs server. Server enforces (token bucket); client cooperates (backoff, pacing). Good client rarely sees 429.
Итог
Retry with breaker and bounded user-facing budget; server protects, client cooperates — symbiotic rate limiting.