Вопрос с собеседования · Spring

Сервис зависит от внешнего платёжного API. Стоит ли включать проверку его доступности в readiness-пробу?

MiddleSpring Boot и ActuatorSpring Boot
Ещё спрашивают так:
  • Включать ли внешний API в health-проверку?
Коротко

Нет: readiness отражает готовность самого пода. Если внешний API упал, все поды станут неготовыми, сервис пропадёт целиком — даже функции, не связанные с оплатой.

  • Внешнюю зависимость защищают таймаутом, circuit breaker и деградацией
  • В readiness — только то, без чего под не может обслужить ничего
  • Состояние зависимостей — в отдельной группе health для мониторинга

А ещё Тем более не в liveness — будут бесконечные перезапуски

Подробно

Логика такая: readiness управляет тем, идёт ли на под трафик. Если в неё включить внешнюю зависимость, то при её падении все поды одновременно объявят себя неготовыми — балансировщик уберёт их из ротации, и даже те запросы, которым платёжный API не нужен, перестанут обслуживаться. Полный отказ вместо частичной деградации. Правильный подход: в readiness — только то, без чего под не может работать вообще (например, инициализация и собственная база), а состояние внешних зависимостей выносят в отдельный health group для наблюдения и защищают circuit breaker с деградацией. Тем более нельзя ставить внешние проверки в liveness — там это приведёт к бесконечным перезапускам контейнера.

Что хотят услышать

  • Ответ и каскадный эффект.
  • Что включать в readiness.
  • Как защищаться от внешней зависимости.

Частые ошибки

  • Включать все зависимости в readiness «для полноты картины».
  • Проверять внешние сервисы в liveness и получать циклические рестарты.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✗Да, обязательно: readiness должна отражать состояние всех зависимостей
  • ✗Да, но только если внешний API отвечает быстрее 100 мс
  • ✓Обычно нет: сбой чужого API выведет все поды из ротации — будет полный отказ
  • ✗Разницы нет — readiness и liveness проверяют одно и то же

Что спросят дальше

  • Как настроить отдельную health group для наблюдения?
  • Что произойдёт при добавлении внешней проверки в liveness?

Разбор темы

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования