Есть паттерн Circuit Breaker: если вы сходили в соседний сервис, а он ответил 500, вы взводите в кэше ключ (скажем, на минуту), который помечает, что соседний сервис не отвечает. Если пометка есть, то не отправляем запрос в соседний сервис, чтобы не создавать на него лишнюю нагрузку. Периодически снова опрашиваем соседний сервис, чтобы поймать момент когда он поднимется обратно. Для реализации этого паттерна внедряем в свои сервисы библиотеку https://github.com/ackintosh/ganesha