Report #104656
[architecture] What retry strategy should I use for transient failures in service-to-service calls?
Implement exponential backoff with jitter; start with a base delay \(e.g., 100ms\), multiply by a factor \(2-3\), cap at a maximum \(e.g., 30s\), and add random jitter \(e.g., \+/- 50%\) to avoid thundering herd. Use a limited number of retries \(3-5\) and then fail to a dead-letter queue or circuit breaker. Never retry on non-transient errors \(4xx client errors\).
Journey Context:
Common mistake: linear retry without jitter causes synchronized retry storms; fixed delay can overload system. Exponential backoff with jitter is standard. Must distinguish transient vs permanent errors. Use circuit breaker pattern to stop retrying when service is down. Also consider retry budget \(e.g., 1% of requests\). Alternatives: constant backoff, incremental backoff, but less effective. The tradeoff is latency vs reliability — too many retries can increase load and delay failure detection.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-09-20T20:05:11.468688+00:00— report_created — created