Designing resilient systems: Circuit Breakers or Retries? (Part 1)
But rather than thinking of all the ways a call to an upstream service could fail, it is often easier to consider what a successful request is. It should be timely, in the expected format, and contain the expected data. If we go by this definition, then everything else is therefore some kind of failure, whether it’s:
a slow response
no response at all
a response in the wrong format
a response that does not contain the expected data