intermediate

Health checks

Предоставляйте машиночитаемые endpoints: может ли сервис принимать трафик и состояние критичных зависимостей.

Health checks — машиночитаемые endpoint'ы или команды для load balancer, оркестраторов и мониторинга. Они отвечают, может ли сервис безопасно принимать трафик — а не только «жив ли процесс».

| Вид проверки | Вопрос | |--------------|--------| | Liveness | Процесс завис и нужен restart? | | Readiness | Должен ли инстанс принимать трафик сейчас? | | Startup | Завершилась ли медленная инициализация? | | Deep / synthetic | Проходит ли критичный для пользователя путь end to end? |

					app.get('/health/ready', async (_req, res) => {
  await db.ping();
  res.status(200).json({ status: 'ready' });
});
				

Держите проверки быстрыми, идемпотентными и с ограничением времени. Не тащите все downstream в liveness.

На интервью: shallow vs dependency checks, startup vs readiness vs liveness и synthetic monitoring с пользовательским impact.

Типовые ошибки: всегда-200 скрывает аварии; глубокие dependency checks вызывают каскадные рестарты.

Компромисс — полнота проверки против скорости и blast radius при флапе зависимостей.

Чеклист:

  • Определите «здоров» для каждой поверхности.
  • Быстрые и ограниченные проверки.
  • Без каскада зависимостей в liveness.
  • Разделяйте семантику readiness и liveness.