Перейти к содержанию
Innovialabs

Метрики DORA: как измерить эффективность DevOps-процессов

Основы3 мин

Коротко

Метрики DORA описывают поставку ПО четырьмя числами: как часто вы деплоите, как быстро коммит попадает в прод, как часто изменения ломают прод и как быстро вы восстанавливаетесь; вместе они показывают и скорость, и стабильность.

Коротко

Метрики DORA появились в исследовательской программе DevOps Research and Assessment и показывают, насколько хорошо команда поставляет софт. Их четыре:

  • Deployment frequency — как часто вы выкатываете изменения в продакшен.
  • Lead time for changes — сколько времени проходит от коммита до продакшена.
  • Change failure rate — какая доля деплоев приводит к сбою, требующему исправления, отката или хотфикса.
  • Time to restore service (его также называют failed deployment recovery time) — сколько времени нужно на восстановление после такого сбоя.

Первые две метрики измеряют скорость, последние две — стабильность. Главная мысль: сильные команды улучшают обе стороны одновременно, а не жертвуют одной ради другой.

Что показывает каждая метрика

МетрикаНа какой вопрос отвечаетЧто обычно её улучшает
Deployment frequencyМожем ли мы часто выпускать небольшие изменения?Маленькие pull request, автоматический пайплайн, feature flags
Lead time for changesСколько ждёт готовое изменение?Быстрое ревью, быстрые тесты, отсутствие очередей на ручное согласование
Change failure rateКак часто релизы вредят пользователям?Тесты, код-ревью, постепенная раскатка, мониторинг
Time to restoreКак быстро мы чиним прод?Простой откат, алерты, ранбуки, observability

Как собрать их из Git и CI

Для старта не нужна отдельная платформа: большая часть данных уже есть в ваших инструментах.

Deployment frequency

  • Считайте успешные запуски job деплоя в продакшен в CI (GitHub Actions, GitLab CI и аналоги).
  • Либо считайте релизные теги или деплои, записанные через deployments API вашего Git-хостинга.

Lead time for changes

  • Для каждого деплоя возьмите коммиты, которые в него вошли.
  • Lead time = время деплоя минус время коммита (или минус время открытия pull request, если так удобнее).
  • Используйте медиану, а не среднее: несколько старых коммитов исказят среднее значение.

Change failure rate

  • Договоритесь, что считается сбоем: откат, хотфикс, инцидент, связанный с релизом.
  • Отмечайте их единообразно: метка на инциденте, префикс ветки hotfix, revert-коммит.
  • Доля = неудачные деплои, делённые на все деплои за период.

Time to restore

  • Берите инциденты из трекера инцидентов или системы алертинга.
  • Время = момент устранения минус момент начала (или обнаружения, если начало неизвестно).

Простой способ получить коммиты релиза с их временем:

git log --format='%H %cI' v1.4.0..v1.5.0

Сравните время каждого коммита с моментом завершения деплоя v1.5.0 и возьмите медиану по релизам.

С чего начать

  1. Сначала договоритесь об определениях: что такое «продакшен», что такое «сбой», когда начинается инцидент.
  2. Соберите данные за несколько недель, прежде чем делать выводы.
  3. Смотрите на динамику своей команды, а не на сравнение с другими компаниями.
  4. Работайте с одним узким местом за раз. Если lead time большой, потому что ревью ждут днями, улучшайте ревью, а не пайплайн.
  5. Обсуждайте цифры вместе с командой на ретроспективах.

Не превращайте метрики в игру

Когда метрика становится целью, люди начинают оптимизировать число, а не результат. Типичные способы «накрутить» DORA:

  • Дробить одно изменение на множество мелких деплоев ради частоты.
  • Не записывать откаты и хотфиксы как сбои, чтобы доля неудач выглядела ниже.
  • Закрывать инциденты раньше времени ради красивого времени восстановления.
  • Сравнивать команды с разными продуктами и наказывать «медленную».

Как этого избежать:

  • Никогда не используйте метрики DORA для оценки отдельных сотрудников.
  • Всегда смотрите на все четыре вместе: скорость без стабильности — тревожный сигнал.
  • Дополняйте цифры качественными сигналами: отзывами разработчиков, жалобами клиентов, разборами инцидентов.
  • Автоматизируйте сбор, чтобы никто не вводил числа вручную.

Частые вопросы

Да. Даже с одним продуктом и несколькими разработчиками четыре числа показывают, становятся ли релизы быстрее и безопаснее. Для сбора достаточно истории CI и общего журнала инцидентов.

Поможем с этим

Если хотите не разбираться самим, а получить результат — этим мы занимаемся каждый день.

Обсудить проект

Читайте также

Есть идея или задача? Расскажите нам

Ответим в течение рабочего дня и предложим решение. Консультация бесплатная.