Что такое SRE?

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

Ответ

SRE (Site Reliability Engineering) — это инженерная дисциплина, сфокусированная на создании и поддержке масштабируемых, надежных и эффективных программных систем. На практике это означает, что я, как инженер, применяю программные решения к операционным задачам.

Основные принципы, по которым я работаю:

  1. Управление через Service Level Objectives (SLO): Мы определяем цели надежности для сервиса (например, доступность 99.9%) и используем Error Budget (допустимое время простоя) для баланса между выпуском новых функций и стабильностью. Если бюджет исчерпан, фокус смещается на улучшение надежности.
  2. Устранение ручного труда (Toil): Я стремлюсь автоматизировать повторяющиеся операционные задачи — развертывание, масштабирование, реагирование на инциденты — с помощью скриптов, систем управления конфигурацией и платформ оркестрации.
  3. Измерение всего: Надежность измеряется через SLI (Service Level Indicators) — конкретные метрики, такие как задержка, частота ошибок или пропускная способность. Например, SLI для API — это доля успешных запросов с задержкой < 200 мс.

Пример декларации SLO в конфигурационном файле (упрощенно):

service: checkout-api
slo:
  - name: request-latency
    objective: 99% of requests < 200ms over 28 days
    sli:
      source: prometheus
      query: rate(http_request_duration_seconds_bucket{le="0.2"}[5m]) / rate(http_request_duration_seconds_count[5m])
  error_budget_policy: stop_feature_releases

Мои типичные задачи как SRE: проектирование отказоустойчивой архитектуры, создание системы мониторинга и алертинга (Prometheus, Grafana), разработка runbooks для автоматического реагирования на инциденты, проведение тренировок по надежности (Chaos Engineering).