Мои вопросы: какой статус HTTP наиболее подходит для нездорового приложения?
503 Услуга недоступна или более низкий уровень TCP RST - это совершенно удовлетворительные способы объявления службы о том, что она в данный момент недоступна. Вы можете использовать Retry-After , если хотите указать время ожидания. Я не видел документации, подтверждающей, что клиент ELB будет уважать этот заголовок.
GCP и Azure похожи; 200 Здоров, ничего другого нет. В документе Azure предлагается 500 Внутренняя ошибка сервера в качестве одного из возможных кандидатов, что, конечно, хорошо (Y00 - это грубое приближение всех кодов Yxx).
Протокол для Консул проверяет аналогично - 2xx для исправного состояния, 429 Too Many Requests для предупреждения (что является действительно странным выбором) и все остальное для отказа.
Я не большой поклонник использования Client Error для описания проблемы с сервером; но я не знаю, что это действительно больно. Семантика Retry-After
действительно четко определена только для 3xx и 429/503, поэтому, если вы надеетесь использовать это, вам следует ограничиться этими кодами.
В противном случае вы можете просмотреть реестр кодов , чтобы узнать, есть ли код, который вы считаете более подходящим.