> Как понимать доступность сервиса (Python)

Уровень: senior · Роль: backend · Язык: Python · Категория: Технические вопросы

Компании: Сбер

Стек: Python

> Пример ответа

Доступность сервиса (availability) - это метрика, показывающая, какую долю времени сервис готов обрабатывать запросы пользователей. Обычно выражается в процентах (например, 99.9% - "три девятки"). Для бэкенда на Python это означает, что приложение должно корректно отвечать на HTTP-запросы (статус 200) в пределах заданного времени (например, <500 мс) без ошибок 5xx.

Ключевые аспекты:

  1. Измерение: Используются мониторинговые системы (Prometheus + Grafana, Datadog) для сбора uptime и latency. Например, эндпоинт /health должен всегда возвращать 200.
  2. Расчет: Availability = (Total time - Downtime) / Total time * 100%. Downtime - время, когда сервис недоступен (ошибки, таймауты).
  3. Обеспечение: В Python это достигается через:
    • Репликацию (несколько воркеров Gunicorn/uWSGI).
    • Graceful shutdown (обработка SIGTERM в asyncio или Flask).
    • Retry-логику с exponential backoff (например, в aiohttp или requests).
    • Health checks для балансировщиков (Nginx, Kubernetes liveness probe).
  4. SLA/SLO: Если SLA 99.9%, допустимый downtime - ~8.7 часов в год. Для высоконагруженных систем (99.99%) - ~52 минуты.

Пример: в FastAPI можно добавить middleware для логирования ошибок и таймаутов, а также использовать asyncio.timeout для предотвращения зависаний.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью