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.