Сайт использует сookies для хранения данных. Продолжая использовать сайт, вы даёте согласие на работу с этими файлами.

ОК
💻
Технологии
Опубликовано:
19.10.2026
•
Обновлено:
19.10.2026

Метрики команды разработки: как использовать DORA и время цикла для улучшения процессов

Илья Новиков

Интуитивные суждения вроде «команда стала деливерить медленнее» или «релизы стали слишком рискованными» редко приводят к конструктивным изменениям. Инженерным лидерам нужны объективные сигналы, отражающие реальное состояние пайплайна поставки ценности.

Фреймворк DORA и детальный анализ времени цикла (Cycle Time) решают эту задачу: они помогают оцифровать процесс разработки, выявить скрытые очереди ожидания и сбалансировать скорость поставки со стабильностью продакшена.


Эволюция и актуальная модель DORA (2024+)

Фреймворк DORA (DevOps Research and Assessment) долгое время ассоциировался с концепцией «четырех ключей» (Four Keys). Однако исследовательская группа регулярно уточняет методологию на основе накопленных эмпирических данных.

Фиксация версии модели: В этой статье используется актуальная модель DORA 2024+, включающая пять метрик. Термины MTTR (Mean Time to Recovery) и Time to restore service рассматриваются исключительно как исторические наименования метрики Failed deployment recovery time.

Актуальная структура делит метрики на показатели пропускной способности (Throughput) и показатели надежности и нестабильности (Instability).

                      ┌───────────────────────────────────────┐
                      │              DORA 2024+               │
                      └──────────────────┬────────────────────┘
                                         │
                 ┌───────────────────────┴───────────────────────┐
                 ▼                                               ▼
   Пропускная способность (Throughput)               Нестабильность (Instability)
   • Deployment frequency                            • Change fail rate
   • Change lead time                                • Deployment rework rate
   • Failed deployment recovery time

Метрики пропускной способности (Throughput)

  1. Deployment Frequency (Частота развертывания)
    Число успешных поставок изменений в production за определенный интервал времени.
    Нюанс расчета: При оценке частоты деплоев DORA и инструменты вроде Google Cloud часто используют концепцию deployment days — количество календарных дней, в которые было совершено хотя бы одно успешное развертывание. Если сервис деплоится 10 раз за один день, но только один раз в неделю, метрика фиксирует неравномерность потока.

  2. Change Lead Time (Время цикла изменения)
    Период от фиксации первого коммита в системе контроля версий до момента, когда этот код успешно заработал на проде. Показывает, насколько быстро техническое решение преодолевает конвейер сборки, тестирования и релиза.

  3. Failed Deployment Recovery Time (Время восстановления после неудачного развертывания)
    Время, необходимое для восстановления нормальной работы системы после инцидента, вызванного релизом и потребовавшего немедленного вмешательства. Ранее эта метрика фигурировала как Time to restore service или MTTR. Уточнение названия подчеркивает причинно-следственную связь именно с проблемным релизом, а не с внешними авариями инфраструктуры дата-центров.

Метрики стабильности и качества (Instability)

  1. Change Fail Rate (Доля неудачных изменений)
    Процент релизов в production, которые привели к деградации сервиса и потребовали отката (rollback), наката срочного патча (hotfix) или ручного вмешательства.
    Change Fail Rate = (Количество проблемных развертываний) / (Общее количество развертываний) ×100%

  2. Deployment Rework Rate (Доля повторной работы)
    Доля незапланированных развертываний, выполненных вследствие сбоя на проде, по отношению ко всем деплоям. Метрика разделяет плановый продуктовый поток и вынужденный «пожарный» режим (break/fix), показывая, какой объем инженерных ресурсов сжигается на устранение последствий некачественных поставок.


Lead Time vs Cycle Time: разбираемся в понятиях

В инженерном менеджменте термины Lead Time и Cycle Time часто смешивают, что приводит к некорректным выводам на ретроспективах и планировании.

Вся задача (Полный Lead Time)
│─────────────────────────────────────────────────────────────────────────────►│
┌──────────────┬──────────────────┬───────────────┬──────────────┬─────────────┐
│ Бэклог/Идея  │ Анализ и дизайн  │  Разработка   │ Ревью/Тесты  │   Деплой    │
└──────────────┴──────────────────┴───────────────┴──────────────┴─────────────┘
               │◄──────────────────────── Cycle Time ─────────────────────────►│
                                  │◄────── DORA Change Lead Time ─────────────►│
  • Полный Lead Time (Customer Lead Time): Время от появления идеи или создания тикета в трекере (Jira, Linear) до момента, когда функционал доступен конечному пользователю. Включает нахождение задачи в бэклоге, аналитику, архитектурное проектирование, приостановки и очереди ожидания.
  • Cycle Time (Время цикла задачи): Время с момента, когда инженер фактически берет задачу в работу (перевод в статус In Progress), до передачи готового результата в прод.
  • DORA Change Lead Time: Чисто инженерная метрика трубы поставки. Отсчет начинается не с тикета, а с момента первого коммита (или открытия Pull Request) и заканчивается финальным деплоем в production.

Фазы времени цикла

Чтобы локализовать узкие места, Cycle Time декомпозируют на четыре базовые фазы:

  1. Coding Time: от первого коммита до создания Pull Request (активная фаза написания кода).
  2. Pickup / Review Time: время нахождения PR в ожидании первого ревьюера плюс время итераций обсуждения и правок.
  3. CI / Test Time: прохождение автоматических проверок, линтеров, юнит- и интеграционных тестов.
  4. Deploy Time: время нахождения ветки в релизной очереди и исполнение пайплайна выкатки на прод.

Практика показывает: в подавляющем большинстве случаев задержки накапливаются не на этапе написания кода, а в состояниях ожидания (idle time) — когда PR часами ждет проверки коллегой или застревает в очереди ручного тестирования перед релизом.


Сбор данных и источники событий

Построение достоверного дашборда метрик требует интеграции трех независимых контуров данных.

Контур Источник событий Фиксируемые данные Метрики
VCS GitHub, GitLab, Bitbucket SHA коммита, timestamp коммита, создание PR, merge PR Coding Time, Review Time, базовая точка Change Lead Time
CI/CD GitLab CI, GitHub Actions, ArgoCD, Jenkins Старт пайплайна, успешный деплой, сбой сборки, релизные теги Deployment Frequency, Deploy Time, финальная точка Change Lead Time
Incident / Monitoring Sentry, DataDog, PagerDuty, Jira Service Management Алерт об ошибке, заведение инцидента, резолюция инцидента, post-mortem Change Fail Rate, Recovery Time, Deployment Rework Rate

Проблема связывания сущностей

Главная сложность автоматизации аналитики — сопоставить сущности между собой:

Коммит (Git) →Релиз (CI/CD) →Инцидент (Monitoring)

Если связь между коммитом и сборкой обычно прозрачна (через SHA коммита и релизный тег), то сопоставление инцидента с конкретным релизом часто требует явной настройки процессов:

  • Автоматическая передача release_id в системы мониторинга и трекинга ошибок при выкатке.
  • Обязательная маркировка hotfix-коммитов и PR ссылкой на инцидент (fix: handle null payment response #INC-1204).
  • Фиксация «окна инцидента» (обычно от 1 до 24 часов после релиза): если сбой произошел в пределах этого окна после деплоя, система автоматически связывает его с последней поставкой для расчета Change Fail Rate.

Интерпретация метрик и сопоставимость сервисов

Прямое сравнение команд разработки по метрикам DORA — распространенная управленческая ошибка.

Контекст сервиса и архитектура

Сравнивать команду, развивающую микросервис на Go с высоким покрытием тестами, и команду, сопровождающую легаси-монолит с ручным тестированием регресса, некорректно:

  • Микросервис может деплоиться по 10 раз в день (высокий Deployment Frequency) с минимальными рисками.
  • Релиз монолита раз в две недели может быть оптимальной частотой при текущих архитектурных ограничениях.

Метрики DORA предназначены для сравнения команды с самой собой во времени, а не для построения внутренних соревновательных рейтингов.

Математическая агрегация: медиана против среднего

Инженерные процессы подвержены выбросам: один зависший на два месяца исследовательский PR или один сложный ночной инцидент искажают среднее арифметическое.

Метод агрегации Поведение на практике Рекомендация
Среднее (Mean) Искажается «длинным хвостом» редких тяжелых задач Не подходит для Change Lead Time и Recovery Time
Медиана (p50) Отражает типичный опыт разработчика в обычный день Базовый ориентир для регулярного мониторинга
Перцентили (p90, p95) Фокусируют внимание на 5–10% наихудших сценариев Идеальны для поиска системных блокеров и редких сбоев

Рекомендуется анализировать связку: p50 (медиана) показывает норму процесса, а дельта между p50 и p95 показывает уровень стабильности и предсказуемости пайплайна.


Как использовать метрики для принятия решений

Метрики DORA сбалансированы: попытка искусственно разогнать скорость неизбежно бьет по качеству, и наоборот.

       Увеличение скорости                    Контроль стабильности
   ┌─────────────────────────┐             ┌─────────────────────────┐
   │  Deployment Frequency   │ ◄─────────► │    Change Fail Rate     │
   │    Change Lead Time     │             │ Deployment Rework Rate  │
   └─────────────────────────┘             └─────────────────────────┘

Сценарии локализации и устранения проблем

  1. Растет Change Lead Time, но Coding Time остается низким.
    Диагноз: Задержка в Review Time или ручном QA.
    Действие: Ограничить объем PR (размер изменений до 200–300 строк кода), внедрить практику парного программирования для сложных фичей, автоматизировать проверку критических сценариев через end-to-end тесты.

  2. Высокий Deployment Frequency сопровождается ростом Change Fail Rate.
    Диагноз: Команда оптимизирует скорость в ущерб верификации; проверки пропускаются или носят формальный характер.
    Действие: Внедрить канареечные релизы (canary deployments) или feature flags, чтобы уменьшить радиус поражения при сбое. Настроить обязательный прогон smoke-тестов на изолированных динамических средах перед выкаткой.

  3. Failed Deployment Recovery Time исчисляется часами.
    Диагноз: Отсутствует механизм быстрого отката; развертывание выполняется накатом изменений вперед (roll-forward), что требует экстренной отладки в боевых условиях.
    Действие: Автоматизировать стратегию Rollback в CI/CD пайплайне по одной кнопке или настроить автоматический откат при срабатывании алертов мониторинга.

Антипаттерны и закон Гудхарта

«Когда метрика становится целью, она перестает быть хорошей метрикой» — закон Гудхарта.

Использование инженерных метрик в качестве индивидуальных KPI для премирования гарантированно приводит к искажению данных:

  • Накрутка Deployment Frequency: Команда начинает дробить один логический коммит на несколько пустых (исправление опечаток в документации, форматирование пробелов), формально увеличивая счетчик релизов.
  • Маскировка Change Fail Rate: Инциденты на проде оформляются как «плановые доработки» или «минорные улучшения», чтобы избежать фиксации сбоя в системе инцидент-менеджмента.
  • Игнорирование сложного рефакторинга: Инженеры избегают системных архитектурных задач, так как они неизбежно увеличивают Change Lead Time.

DORA и Cycle Time — это диагностические инструменты для поиска проблем в процессе, а не инструмент административного контроля сотрудников.


Часто задаваемые вопросы (FAQ)

С чего начать сбор метрик, если процессы не стандартизированы?

Начните с аудита двух точек: время открытия и слияния Pull Request в Git (дает первичный Cycle Time) и фиксация успешных выкаток в прод из CI-сервера (дает базовый Deployment Frequency). Это можно реализовать с помощью простых скриптов или встроенных модулей аналитики Git-платформ без внедрения сложных коммерческих платформ.

Почему DORA отказалась от метрики MTTR?

Термин Mean Time to Recovery (MTTR) исторически заимствован из теории надежности оборудования и создает ложные предпосылки. Во-первых, усреднение (Mean) маскирует масштабные аварии за счет сотен мелких инцидентов. Во-вторых, неясно, что считать восстановлением: перезагрузку контейнера, доступность балансировщика или полное устранение бага в коде. Метрика Failed deployment recovery time сфокусирована строго на восстановлении после сбоя, вызванного релизом, и рассчитывается через медианные интервалы.

Считаются ли деплои на стейджинг в Deployment Frequency?

Нет. В методологии DORA учитываются только успешные развертывания в продуктивную среду, где с кодом взаимодействуют реальные пользователи. Развертывания на стейджинг или тестовые контуры могут служить внутренними техническими маркерами, но не отражают реальную поставку ценности.

Как размер изменений (Batch Size) влияет на Change Fail Rate?

Между размером изменений и частотой сбоев существует прямая корреляция. Чем больше строк кода содержит релиз, тем сложнее провести качественное ревью и тем выше вероятность непредвиденных сайд-эффектов на проде. Дробление задач на небольшие независимые поставки снижает Change Fail Rate и радикально ускоряет локализацию сбоев.

Что делать, если специфика бизнеса требует редких релизов?

Если вы разрабатываете софт со строгим внешним комплаенсом (банковские core-системы, встраиваемое ПО), частота деплоев в прод объективно ограничена. В этом случае фокус смещается на оптимизацию Change Lead Time до предрелизной среды и минимизацию Change Fail Rate, чтобы каждый запланированный релиз проходил без сбоев.


Резюме

Метрики DORA (модель 2024+) и Cycle Time дают объективную картину инженерного процесса только в связке друг с другом:

  1. Скорость без качества деструктивна: высокий Deployment Frequency теряет смысл, если сопровождается ростом Change Fail Rate и повторной работы (Deployment Rework Rate).
  2. Ищите задержки в очередях: большинство проблем с временем цикла связано не со скоростью написания кода, а со временем ожидания код-ревью и тестирования.
  3. Используйте правильную математику: анализируйте медианы (p50) и перцентили (p90/p95), избегая средних арифметических значений.
  4. Не превращайте метрики в KPI: фреймворк создан для поиска системных ограничений в архитектуре и пайплайнах, а не для оценки личной продуктивности разработчиков.

Источники

Это авторская статья, основанная на личном опыте и субъективном взгляде автора. Заметили ошибку или битую ссылку? Сообщите нам: info@codesrc.ru - мы оперативно исправим. Спасибо, что помогаете делать блог лучше.
Следите за нами в соцсетях:

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