惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Spread Privacy
Spread Privacy
大猫的无限游戏
大猫的无限游戏
F
Fortinet All Blogs
M
MIT News - Artificial intelligence
G
Google Developers Blog
Hacker News: Ask HN
Hacker News: Ask HN
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
H
Help Net Security
V
Visual Studio Blog
WordPress大学
WordPress大学
博客园 - 司徒正美
TaoSecurity Blog
TaoSecurity Blog
Webroot Blog
Webroot Blog
Hugging Face - Blog
Hugging Face - Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
W
WeLiveSecurity
C
CERT Recently Published Vulnerability Notes
Y
Y Combinator Blog
S
Schneier on Security
Recent Announcements
Recent Announcements
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
宝玉的分享
宝玉的分享
T
Troy Hunt's Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 三生石上(FineUI控件)
Microsoft Azure Blog
Microsoft Azure Blog
N
News and Events Feed by Topic
A
About on SuperTechFans
小众软件
小众软件
K
Kaspersky official blog
Help Net Security
Help Net Security
V2EX - 技术
V2EX - 技术
P
Proofpoint News Feed
S
Secure Thoughts
IT之家
IT之家
云风的 BLOG
云风的 BLOG
N
Netflix TechBlog - Medium
The Register - Security
The Register - Security
I
Intezer
NISL@THU
NISL@THU
GbyAI
GbyAI
P
Privacy & Cybersecurity Law Blog
T
Threatpost
C
Check Point Blog
Forbes - Security
Forbes - Security
C
Cisco Blogs
AI
AI
Recorded Future
Recorded Future
F
Full Disclosure

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
DORA-метрики: как собирать, интерпретировать и не переусердствовать, часть 2
SimpleOne_it · 2026-04-23 · via Все публикации подряд на Хабре

Уровень сложностиСредний

Время на прочтение12 мин

Охват и читатели2

Обзор

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

 Слева — дашборд. Справа — реальность. «По метрикам мы elite. Третий день разгребаю деплой.» Именно поэтому бенчмарки без контекста — опасная иллюзия

Слева — дашборд. Справа — реальность. «По метрикам мы elite. Третий день разгребаю деплой.» Именно поэтому бенчмарки без контекста — опасная иллюзия

Бенчмарки DORA

Когда говорят о DORA-бенчмарках, обычно имеют в виду один известный график с четырьмя уровнями зрелости команд: elite, high, medium и low.

Долгое время это действительно была стандартная модель – команды делились на группы по пяти метрикам: частота деплоев, время от коммита до прода, время восстановления после инцидента, процент проблемных изменений и надёжность сервиса.

Обратите внимание: High, Medium и Low performers показывают одинаковые 16–30%. Вот почему DORA сама перестала делить команды на жёсткие уровни — границы размываются в зависимости от выборки

Обратите внимание: High, Medium и Low performers показывают одинаковые 16–30%. Вот почему DORA сама перестала делить команды на жёсткие уровни — границы размываются в зависимости от выборки

Отсюда выросла логика: деплоишь чаще, восстанавливаешься быстрее, ломаешь прод реже – значит, ты ближе к elite. Но рынок взял эту модель и превратил её в некую вечную универсальную шкалу, а сама DORA за это время стала куда осторожнее в своих формулировках.

Слева — Software Delivery Performance (как быстро доставляете), справа — Operational Performance (насколько стабильно работает). Четыре метрики про скорость, одна про надёжность — и именно этот баланс чаще всего нарушают, когда гонятся за deployment frequency.

Слева — Software Delivery Performance (как быстро доставляете), справа — Operational Performance (насколько стабильно работает). Четыре метрики про скорость, одна про надёжность — и именно этот баланс чаще всего нарушают, когда гонятся за deployment frequency.

Показательный факт: до 2018 года исследование стабильно выявляло три кластера, а потом их количество стало варьироваться от трёх до четырёх. То есть структура уровней зависит от данных конкретного года, и нет универсального решения.

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

Throughput (производительность)

  • Время от коммита до деплоя (Lead Time for Changes) — сколько времени проходит от момента, когда разработчик зафиксировал изменение в коде, до его появления в продакшене. Охватывает всё: код-ревью, прогон тестов, сборку, деплой. Длинный лид-тайм обычно сигнализирует о бутылочных горлышках в процессе — например, в ручных проверках или медленном CI.

  • Частота деплоев (Deployment Frequency) — как часто команда выкатывает изменения в прод. У elite-команд это может происходить несколько раз в день, а у low — раз в несколько месяцев. Высокая частота сама по себе не цель, но косвенно говорит о том, что каждый деплой небольшой и менее рискованный.

Stability (стабильность)

  • Процент проблемных изменений (Change Failure Rate) — какая доля деплоев приводит к деградации сервиса, откату или срочному хотфиксу. Метрика показывает не количество багов вообще, а именно те случаи, когда релиз потребовал немедленного вмешательства. Высокий CFR при частых деплоях — сигнал, что скорость опережает качество обратной связи.

  • Время восстановления после неудачного деплоя (Time to Restore Service) — как быстро команда возвращает сервис в рабочее состояние после инцидента, вызванного деплоем. Метрика отражает зрелость процессов реагирования: наличие мониторинга, runbook'ов, возможности быстрого rollback.

  • Налог на переделки (Deployment Rework Rate) — какую долю деплоев составляют незапланированные исправления: хотфиксы, патчи, откаты. В отличие от CFR, который фиксирует сам факт проблемы, Rework Rate показывает, сколько ресурсов команда тратит на разгребание последствий вместо создания новой ценности.

Где начинается проблема

Проблема возникает, когда бенчмарки начинают читать буквально – как будто есть одна шкала, по которой можно сравнивать любую команду в любой отрасли. Метрики лучше всего работают для измерения одного конкретного сервиса, и что контекст важен. Архитектура, тип нагрузки, требования к надёжности, модель релизов: всё это влияет на то, что считать хорошим результатом.

Две команды в одной компании. Команда А деплоит 12 раз в неделю, Change Failure Rate – 8%. Команда Б деплоит раз в две недели, CFR – 2%. Менеджмент решает, что Б "хуже" по частоте. Но Б поддерживает платёжный шлюз с SLA 99.99%, где каждый деплой проходит через обязательный compliance review. А поддерживает внутренний дашборд.

Сравнивать их deployment frequency – всё равно что сравнивать скорость скорой помощи и такси.

Поэтому бенчмарки DORA они помогают понять, где вы находитесь относительно общей выборки и как меняетесь со временем. Но как только они превращаются в KPI без поправки на контекст – начинается искажение реальной картины, с подменой на красивую шкалу.

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

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

В актуальном гайде написано так: 

Метрики лучше всего работают для измерения одного конкретного сервиса, а не команд в целом. И контекст имеет огромное значение.

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

Одинаковые цифры никогда не смогут значить одинаковый уровень зрелости. Единая частота деплоев или одинаковое время восстановления у двух команд ещё не повод ставить между ними знак равно. У мобильного приложения, внутренней банковской системы и мейнфреймового ПО совершенно разные ограничения, риски и цена ошибки. Сравнение таких систем между собой будет типичным антипаттерном.

Ещё один соблазн – прикрываться отраслью: мол, у нас жёсткий комплайенс, поэтому всё работает медленно и совсем иначе. Но регуляторные требования могут объяснять, почему у вас именно такая форма процессов, но они никак не снимают вопрос о качестве поставки изменений, а только меняют его форму.

Высоких показателей можно добиться и на мейнфрейме, но провалиться с микросервисами, если архитектура остаётся жёстко связанной и каждый деплой требует согласования с несколькими командами. Важно понимать: позволяет ли архитектура тестировать, менять и выкатывать сервис без постоянной зависимости от других.

Когда менеджмент узнал слово "elite" и решил, что deployment frequency — это KPI. А мейнфрейм тихо работает и никого не трогает

Когда менеджмент узнал слово "elite" и решил, что deployment frequency — это KPI. А мейнфрейм тихо работает и никого не трогает

Поэтому сравнение команд в лоб так часто превращается в управленческую ловушку. Без учёта типа продукта, архитектуры, требований к надёжности и регуляторного давления DORA-метрики начинают выглядеть подобно спортивной таблице. Использовать метрики прежде всего стоит как инструмент улучшения собственного процесса во времени, а не как повод мериться цифрами с командами, которые живут в совершенно другой инженерной реальности.

Как автоматизировать сбор метрик?

На бумаге всё выглядит хорошо: есть пять метрик, а значит, остаётся вывести их на дашборд. На практике же понеслась – процесс начинается с нормализации данных и договорённости о терминах.

Метрики изначально не лежат в одной системе в готовом виде.
Их приходится собирать из разрозненных событий: коммитов, деплоев, инцидентов и сигналов мониторинга. Сначала сырые события приводятся к единому формату, потом классифицируются, и только после этого можно что-то считать.

 Панель разработчика в SimpleOne SDLC: коммиты, ветки и merge-реквесты привязаны к задаче.

Панель разработчика в SimpleOne SDLC: коммиты, ветки и merge-реквесты привязаны к задаче.

Для этого нужны четыре типа источников: 

  • Система контроля версий;

  • CI/CD-контур;

  • система инцидентов;

  • И мониторинг. 

Чаще всего это выглядит как Git + CI/CD + issue/incident tracker + алерты. Каждый источник закрывает свою часть: Git фиксирует момент появления изменения, CI/CD знает, что и когда ушло в прод, а трекер инцидентов показывает деградацию и момент её устранения.

Три системы, три источника данных, ни одна не знает про остальные. Lead Time живёт в Git, деплои — в Jenkins, инциденты — в Grafana. Пока не свяжете события между собой — метрики считаете вслепую

Три системы, три источника данных, ни одна не знает про остальные. Lead Time живёт в Git, деплои — в Jenkins, инциденты — в Grafana. Пока не свяжете события между собой — метрики считаете вслепую

Самое важное начинается там, где нужно связать события между собой. Lead Time не существует без связки «коммит → деплой». Change Failure Rate не считается без атрибуции «деплой → инцидент». Recovery Time требует двух временных меток: когда инцидент открылся и когда закрылся. Без этих связей автоматизация просто быстро и красиво считает неправильные вещи.

— У нас есть дашборд с метриками.

— Откуда данные?

— Из Jenkins.

— А инциденты?

— Из головы, в общем-то.

— Тогда у вас есть красивый дашборд, а не метрики.

Отдельный вопрос – что именно считать деплоем, инцидентом и неудачным изменением. Универсального ответа нет: считается ли выкладка на 5% трафика полноценным прод-деплоем? Где заканчивается обычный баг и начинается инцидент, который должен влиять на Change Failure Rate? Это решает каждая команда самостоятельно, и пока этого решения нет, никакая автоматизация не поможет.

Когда ручной сбор – норма?

Раз речь пошла про Git, CI/CD и нормализацию событий легко решить, что DORA история только для зрелых команд с уже собранной телеметрией. Но это не так.

Строительство интеграций во все системы может просто не стоить первоначальных усилий – особенно пока команда ещё не понимает, какие метрики ей действительно нужны. Нормальная последовательность выглядит иначе: сначала зафиксировать baseline, обсудить основные точки трения, выбрать главный bottleneck, и только затем обдумывать автоматизацию. Измерение не обязано сразу быть точным и полным.

Ручной или полуавтоматический сбор особенно уместен в трёх случаях: 

  • Когда нет сквозной связки между Git, деплоями и инцидентами; 

  • При наличии инфраструктуры, но определения внутри ещё не устоялись;

  • Если команда просто не хочет тратить месяцы на телеметрию, не понимая пока её ценности. 

Полуавтоматический режим выглядит ещё реалистичнее. Например, коммиты и деплои подтягиваются автоматически, а инциденты и rework пока размечаются вручную, или даже наоборот. Идея в том, чтобы сначала научиться правильно определять сущности и только потом доводить всё до полной автоматизации.

У ручного подхода есть ограничения.
Часть инцидентов не попадёт в учёт, часть хотфиксов не будет помечена как rework. На одном сервисе это терпимо, на десяти начнёт разваливаться. Есть и риск политической фильтрации: команда может подсознательно занижать failure rate или не считать неудобные случаи инцидентами.

Если команда может уже сегодня зафиксировать, сколько раз она выкатывалась в прод, какие релизы вызвали срочное вмешательство и сколько времени ушло на восстановление, этого уже достаточно, чтобы увидеть базовую картину. Автоматизация тогда станет способом убрать рутину и повысить доверие к данным.

Где DORA заканчивается 

DORA измеряет конкретный срез разработки, но не весь процесс целиком: как команда доставляет изменения и насколько стабильно система переживает сбои.

Это важно помнить, потому что метрики выглядят как «почти всё, что нужно знать о команде». На деле они отвечают на вопрос про скорость и стабильность доставки – но не на вопрос, делаете ли вы вообще что-то нужное пользователю. Можно держать отличный deployment frequency и низкий fail rate, но катить в прод функцию, которой никто не пользуется. Для понимания продуктовой полезности нужны другие инструменты например, продуктовые метрики adoption или usability (степень лояльности и использования новых функций).

Второй слепой угол – состояние команды.
Developer experience не извлекается из логов CI/CD и Git: удовлетворённость, когнитивная нагрузка, уровень фрустрации самостоятельная область измерения со своими фреймворками.

Третий – техдолг.
DORA может косвенно сигнализировать о проблемах: растущий rework rate или ухудшение recovery time часто идут рядом с деградацией архитектуры. Но прямого измерителя техдолга здесь нет.

Четвёртый всё, что происходит до коммита. Если команда хочет понять, где теряется время в приоритизации, согласованиях или product discovery, одной DORA  не хватит, нужен более широкий взгляд на весь поток работы.

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

Вопрос

DORA отвечает?

Что использовать

Быстро ли доставляем?

Да

DORA

Делаем ли нужное?

Нет

HEART, продуктовые метрики

Комфортно ли команде?

Нет

SPACE, DevEx

Где теряется время до коммита?

Нет

Flow metrics

Сколько техдолга?

Косвенно

Rework Rate + архитектурный аудит

Логи – не синоним объективности

DORA сильная рамка ровно для той задачи, для которой она создана. Но как только её начинают использовать как ответ на все вопросы сразу (продуктовые, архитектурные, человеческие)  у инструмента начинают спрашивать больше, чем он вообще способен дать.

Связка с другими фреймворками 

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

— По DORA мы в топе. Lead time меньше часа, деплоим каждый день.

— Отлично. Команда довольна?

— Ну... народ устал немного. On-call каждую неделю, алерты ночью.

— А пользователи пользуются тем что вы деплоите?

— Это надо у продакта спрашивать.

— То есть вы очень быстро доставляете то, чем никто не пользуется — и при этом выжигаете команду?

— По метрикам мы elite.

Именно здесь DORA заканчивается — и начинаются другие инструменты:

Фреймворк SPACE: мониторит состояние людей. Можно иметь приличный lead time и частые деплои, при этом убивая команду контекст-свитчингом, перегрузкой on-call и хрупкими ручными процессами. DORA покажет, что доставка идёт, SPACE поможет понять, какой ценой это достигается.

DevEx-метрики: смотрят на то, как система ощущается изнутри: сколько времени уходит на локальную сборку, насколько предсказуем CI, как часто разработчик упирается в flaky tests, насколько тяжело пройти путь от идеи до merge request. DORA описывает систему снаружи, а DevEx описывает изнутри.

Flow metrics нужны, когда проблема сидит до коммита: в handoff'ах, ожиданиях и согласованиях. Cycle time, flow efficiency, WIP, queue time – всё это полезно там, где работа простаивает между этапами, а production delivery как таковая здесь ни при чём.

Продуктовые рамки:  когда вопрос уже про ценность, а про доставку. H.E.A.R.T. и продуктовые метрики отвечают на то, начали ли пользоваться функцией, удобно ли она работает и принесла ли ожидаемый результат. DORA ответит, насколько хорошо вы довезли изменение до прода.

Продуктовые метрики – нужно ли оно было вообще.

Ну или более практичная в понимании развилка:

  • Болит скорость и стабильность доставки – DORA

  • Болит состояние команды, когнитивная нагрузка, качество рабочего дня – SPACE / DevEx

  • Болит поток до релиза: очереди, зависания, согласования – flow metrics и value stream mapping

DORA сильная базовая ось, которая очень хорошо показывает здоровье delivery-механизма. Чем взрослее команда, тем яснее: одна линза остальные заменить не может.

А что с DORA у российских команд?

Публичной статистики именно по России с внятной разбивкой по DORA-кластерам почти нет. Честнее будет разобрать наблюдаемых паттернах, которые часто встречаются у локальных команд и напрямую влияют на метрики.

Пожалуй, самая сквозная история – тяжёлый релиз как организационная норма. В enterprise, банках, госе и крупных legacy-контурах production change до сих пор воспринимается как событие, требующее отдельного административного ритуала: релизного окна, ручных апрувов и даже межкомандной координации. Это одновременно давит на deployment frequency и раздувает lead time – причём не из-за кода или тестов, а из-за ожидания. Сами по себе редкие релизы могут выглядеть как осторожность, но в логике DORA это просто дорогой и медленный путь до прода.

В одной из команд, с которой мы работали, от merge в main до появления в проде проходило 11 дней. Из них 9 – ожидание релизного окна и ручные согласования. Код был готов, тесты пройдены, но деплой происходил строго по четвергам, после подписи трёх человек.

Рядом с этим живёт другая проблема: автоматизация развивается неравномерно. CI/CD может быть – но последние мили релиза всё равно проходят через ручные проверки, чек-листы и отдельные контуры тестирования. Российские инженерные публикации последних лет почти всегда говорят о CI/CD через внедрение лучших практик и условный переход к SDET/QAOps – то есть рынок активно догоняет зрелую культуру непрерывной поставки, а не живёт в ней как в давно решённой норме.

 CI/CD настроен — говорит команда, у которой Jenkins собирает, GitLab тестирует, а последняя миля деплоя проходит через Сергея Иваныча из инфраструктуры. This is fine

CI/CD настроен — говорит команда, у которой Jenkins собирает, GitLab тестирует, а последняя миля деплоя проходит через Сергея Иваныча из инфраструктуры. This is fine

Отдельная боль инструментальная разнородность. На локальном рынке одновременно сосуществуют GitHub Actions, GitLab CI, Jenkins, самописные пайплайны и внутренние оркестраторы. Проблема здесь зачастую даже не в отсутствии инструментов, а в том, что события из этих инструментов трудно собрать в единую согласованную модель. Нет слоя между Git, deploy events, incident management и мониторингом. Bottleneck сидит именно здесь.

Эту картину дополнительно усложняет импортозамещение. Когда команды переезжают между системами, строят временные связки и держат часть процессов на переходных решениях – наблюдаемость за delivery-процессом ухудшается независимо от его реального качества. Иными словами, проблема может быть и в плохой видимости, а не только в плохом процессе.

У многих российских команд delivery-процесс раздроблен между унаследованной архитектурой, ручными согласованиями, смешанным инструментарием и неполной обратной связью. 

Рекомендации: с чего начать команде, если она хочет внедрять DORA без гигантского проекта

Самый здравый старт – выбрать один сервис или один продуктовый контур. Метрики лучше всего работают для измерения одного конкретного приложения за раз. Это главный способ избежать споров о том, почему у фронта одни цифры, у бэка другие, а у платформенной команды вообще третья реальность.

Второй шаг – словарь событий, а не дашборд. Команда должна заранее договориться, что именно у неё считается deployment, failed change, recovery и rework. Без этих определений любая автоматизация будет быстро и красиво считать неправильные вещи.

Дальше – минимальный baseline. Для начала достаточно ответить на несколько простых вопросов за выбранный период: сколько раз команда выкатывалась в продакшн, сколько выкладок потребовали срочного вмешательства, сколько времени уходило на восстановление и сколько незапланированной работы съедали последствия проблем. Идеальная телеметрия на этом этапе необязательна – интеграция всех систем сразу может просто не стоить усилий.

Дашборд SimpleOne SDLC: burndown, velocity по спринтам и время в продакшене — тот самый baseline, с которого начинается осмысленное измерение. Не идеальная телеметрия, но уже не «из головы, в общем-то»

Дашборд SimpleOne SDLC: burndown, velocity по спринтам и время в продакшене — тот самый baseline, с которого начинается осмысленное измерение. Не идеальная телеметрия, но уже не «из головы, в общем-то»

Когда baseline есть, важно выбрать одну главную боль, а не пытаться улучшить всё сразу. Редкие и тяжёлые релизы – начинать с deployment frequency и lead time. Прод горит при частых деплоях – в центре внимания change fail rate, recovery time и rework. Всё выглядит нормально, но команда хронически не успевает  стоит дополнить DORA flow-метриками или DevEx-сигналами.

И последнее: первый baseline уже хороший результат, а не промежуточная ступень к настоящему внедрению. Следующий шаг постепенно убирать ручной учёт там, где он начинает мешать, и выстраивать событийную модель из Git, CI/CD, incident management и мониторинга. Порядок здесь принципиален: сначала смысл и определения, потом автоматизация.

Короткий стартовый план выглядит так: выбрать один сервис, договориться о терминах, снять baseline за 2–4 недели, понять главный bottleneck, менять процесс и только после этого автоматизировать то, что уже стало осмысленным.

Начните с одного сервиса и четырёх вопросов. Через месяц у вас будет baseline. Через три — понимание, где на самом деле болит.