Готовность сервиса к эксплуатации: health checks, graceful shutdown, логи, метрики

↑ 7.6 DevOps для бэкенд-разработчика · ← Предыдущая · → Следующая

По желанию~3 мин чтенияУровень: senior

Зачем это на собесе

Чек-лист «production readiness»: что должен уметь сервис, чтобы его можно было безопасно эксплуатировать.

Объяснение

ОбластьТребование
Здоровье/health/live и /health/ready (см. Health checks: liveness и readiness)
Остановкаgraceful shutdown: завершение запросов и консьюмеров по SIGTERM (см. Graceful shutdown и жизненный цикл приложения)
Логиструктурные JSON в stdout, trace_id, без секретов
МетрикиRED-метрики, runtime, бизнес-метрики, экспорт (Prometheus/OTLP)
ТрейсыOpenTelemetry, проброс контекста
Конфигурациячерез окружение, валидация при старте
Ресурсыrequests/limits, лимиты пула и потоков
Отказоустойчивостьтаймауты, ретраи, circuit breaker, идемпотентность
Безопасностьне root, секреты вне образа, минимальные права, актуальные зависимости
Данныемиграции совместимы, бэкапы проверены
ДокументацияREADME, runbook, алерты со ссылками
Версияв /health, метриках и логах
Масштабированиеstateless, состояние вне процесса

Runbook: что делать при типовых инцидентах (рост ошибок, задержки, переполнение очереди, недоступность БД) — шаги диагностики и восстановления.

Нюансы и подводные камни

  • Readiness, зависящий от неважной зависимости, выводит сервис из балансировки без причины.
  • Отсутствие лимитов ресурсов: один сервис «съедает» узел.
  • Логи только в файлы внутри контейнера теряются при перезапуске.
  • Нет алертов на симптомы — узнаёте об инциденте от пользователей.

Практика

  1. Пройдите чек-лист по своему сервису и заведите задачи на пробелы.
  2. Напишите runbook для двух самых вероятных инцидентов.
  3. Проведите тест перезапуска зависимостей (chaos-lite).

Вопросы с ответами

Связанные темы