Что такое SLA?

«Что такое SLA?» — вопрос из категории Архитектура и DevOps-практики, который задают на 24% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

SLA (Service Level Agreement) — это формальное соглашение между поставщиком услуги и ее потребителем, которое определяет количественные метрики качества обслуживания и последствия их невыполнения.

Ключевые метрики SLA в DevOps-практике:

  • Доступность (Availability/Uptime): Процент времени, когда сервис функционирует. Выражается как «девятки».
    • 99.9% («три девятки») ≈ 43 минуты простоя в месяц.
    • 99.99% («четыре девятки») ≈ 4 минуты простоя в месяц.
  • Время на восстановление (RTO — Recovery Time Objective): Максимально допустимое время простоя сервиса после сбоя.
  • Целевая точка восстановления (RPO — Recovery Point Objective): Максимальный объем данных (во времени), допустимый к потере (определяет частоту бэкапов).
  • Время реакции и разрешения инцидентов: Например, «критичные инциденты (P1) получают ответ в течение 15 минут и устраняются за 1 час».

Как DevOps-инженер работаю с SLA:

  1. Мониторинг и алертинг: Настраиваю системы (Prometheus, Grafana, Datadog) для отслеживания метрик, напрямую связанных с SLA: uptime, latency (p95, p99), error rate. Алёрты конфигурируются при приближении к пороговым значениям.
  2. Проектирование отказоустойчивости: Чтобы выполнить строгий SLA по доступности, внедряю архитектурные паттерны: редундантность на всех уровнях (зоны доступности, регионы), автоматическое переключение (failover), graceful degradation.
  3. Автоматизация реагирования: Использую runbooks в системах типа PagerDuty или Opsgenie, которые автоматизируют первые шаги реакции на инцидент, сокращая MTTR (Mean Time To Repair).
  4. Пример расчета и мониторинга в Prometheus:
    # Prometheus Rule для алерта при падении доступности ниже 99.9% за последний час
    - alert: APIAvailabilityBelowSLA
      expr: (1 - (avg_over_time(probe_success{job="api-health"}[1h]))) * 100 > 0.1
      for: 5m
      labels:
        severity: critical
      annotations:
        summary: "Нарушение SLA по доступности API (менее 99.9%)"
        description: "Доступность за последний час составила {{ $value }}%"

    Нарушение SLA обычно влечет финансовые компенсации (credits) для клиента в облачных моделях или штрафы во внутренних соглашениях.