A call to a downstream service fails. How do you retry it without making things worse?
A strong answer treats retries as a system property, covering classification, jitter, budgets, and idempotency, not just a loop with a sleep in it
Basically you retry with exponential backoff and you cap the attempts. So wait one second, then two, then four, and give up after three to five tries or so. You add jitter, which is just a random component in the delay, so that a bunch of clients that failed at the same moment don't all come back at the same moment. And you only retry errors that are probably transient, like timeouts and 503s, and only on operations that are idempotent, where running them twice is harmless. For writes that aren't naturally idempotent there's the idempotency key thing, which lets the server deduplicate. Honestly libraries handle most of this for you, and a circuit breaker on top stops retrying entirely when the dependency looks properly down. The main things to avoid are retrying forever and hammering a service that's already struggling.