Какие метрики и формулы используются для оценки стабильности (надежности) системы в DevOps?

«Какие метрики и формулы используются для оценки стабильности (надежности) системы в DevOps?» — вопрос из категории DevOps, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В DevOps практиках стабильность системы количественно оценивается через набор ключевых метрик, часто объединяемых в формулу Service Level Indicators (SLI) и Service Level Objectives (SLO).

Основные метрики для оценки стабильности:

  1. Доступность (Availability): Процент времени, когда сервис был доступен для пользователей.

    • Формула: (Общее время - Время простоя) / Общее время * 100%
    • Цель (SLO): Например, «99.9% доступности в месяц» (что допускает ~43 минуты простоя).
  2. Частота ошибок (Error Rate): Процент запросов, завершившихся с ошибкой (HTTP 5xx, 4xx для клиентских ошибок).

    • Формула: Количество ошибочных запросов / Общее количество запросов * 100%
    • Цель (SLO): «Частота ошибок не более 0.1%».
  3. Латентность (Latency): Время обработки запроса. Часто измеряется как перцентили (p50, p95, p99).

    • Цель (SLO): «95% запросов должны обрабатываться быстрее 200 мс».
  4. Восстановление (Time to Recovery): Среднее время восстановления сервиса после сбоя (MTTR — Mean Time To Recovery).

Практический пример мониторинга в Grafana/Prometheus:

# Доступность сервиса за последние 30 дней (на основе HTTP кодов)
100 - ( 
  avg_over_time( 
    rate(http_requests_total{status=~"5..", job="my-service"}[30d]) 
  ) 
  / 
  avg_over_time( 
    rate(http_requests_total{job="my-service"}[30d]) 
  ) 
) * 100

# Перцентиль latency за последний час (p95)
histogram_quantile(0.95, 
  sum(rate(http_request_duration_seconds_bucket{job="my-service"}[1h])) by (le)
)

Стабильность — это не просто «работает/не работает», а измеримое обязательство перед пользователем, выраженное в SLO. Мы используем эти метрики для триггеров алертов и принятия решений о развертывании новых версий.