Курс Технический менеджер продуктов · автор Stanislav Belyaev
EN RU

Очередь на мердж

4 исходящих · 4 входящих · 8 всего связей

Карта Детали
МАСШТАБ КОМАНДЫ
Code Review УСИЛЕНО В МОНОРЕПО УСИЛЕНО В РАСПРЕДЕЛЁННЫХ КОМАНДАХ

Очередь на мердж

Время ожидания в merge queue — это период между готовностью PR к мержу и его фактическим попаданием в основную ветку. Длинная очередь возникает из-за медленных проверок, конфликтов или ограничений на параллельные мержи. Эта метрика особенно критична в крупных монорепозиториях, где десятки PR конкурируют за мерж одновременно.

Время ожидания в очереди после аппрува. Критично при 20+ активных разработчиках.

КОНТЕКСТ МОНОРЕПО

КРИТИЧЕСКИ УСИЛИВАЕТСЯ: В монорепозиториях десятки PR конкурируют за одну основную ветку. Без партиционирования очереди (Merge Queue Partitioning) каждый мердж инвалидирует проверки остальных PR, создавая бесконечный цикл пересборок.

КОНТЕКСТ РАСПРЕДЕЛЁННЫХ КОМАНД

УСИЛИВАЕТСЯ: PR встаёт в queue в конце рабочего дня автора → падает ночью из-за конфликта или флаки-теста → автор не видит это до утра. 30-минутный фикс превращается в 2-дневный цикл.

Влияние масштаба
👤 Один / Пара (1–3)
0.1
👥 Команда (4–15)
0.3
🏢 Отдел (15–100)
0.8
🏛️ Организация (100+)
1

Конкуренция за очередь сверхлинейна.

4
Влияет на
4
Зависит от

→ Влияет на

Высокий КритическийМОНОРАСП
Время доставки (Lead Time)

Прямой аддитивный компонент.

Узкое место при 20–30+ девах
GitHub Engineering / Merge Queue research
Монорепо: В крупных монорепозиториях с сотнями контрибьюторов merge queue становится ДОМИНИРУЮЩИМ компонентом lead time.
Распределённые: Падения в очереди за ночь добавляют задержку на целый день. В распределённых монорепозиториях очередь становится ДОМИНИРУЮЩИМ компонентом lead time.
Переключение контекста

Непредсказуемые ожидания фрагментируют рабочий день.

Переменное время ожидания накапливается
Merge queue / Developer productivity research
Средний КритическийМОНОРАСП
Удовлетворённость разработчиков

Наблюдать, как одобренные PR сбрасываются из-за чужих падений.

Частая жалоба
Merge queue documentation / Developer surveys
Монорепо: В монорепозиториях нестабильный тест в несвязанном проекте может сбросить ТВОЙ PR — создавая острую межкомандную фрустрацию.
Распределённые: Смотреть, как твой PR падает за ночь, и ждать утра, чтобы починить — снова и снова — это самый быстрый путь к фрустрации и оттоку.
PR в неделю

Сбои в очереди сбрасывают прогресс PR. Каждый сбой = часы или дни задержки до завершения повтора.

Expedia: 20+ конкурирующих PR
Trunk.io / Merge queue scalability
Монорепо: Merge queue в монорепо особенно болезненны без партиционирования очереди. Один сбой инвалидирует все PR в очереди.
Распределённые: Сбои очереди за ночь означают, что разработчики просыпаются с failed merges, пересабмитят и ждут еще один 12-24h цикл.

← Зависит от

Нестабильность тестов (Flakiness)

Один упавший нестабильный тест сбрасывает все PR в очереди каскадом.

10%+ flakiness делает очередь непригодной для использования
GitHub Merge Queue Documentation & Trunk.io
Монорепо: Expedia: 20+ PR конкурируют одновременно — нестабильный тест в любом затронутом проекте сбрасывает всю очередь целиком.
Средний КритическийМОНОРАСП
Размер PR

Крупные изменения чаще конфликтуют с PR в очереди.

∝ площади изменений
Graphite, GitHub Engineering
Монорепо: В монорепозиториях межпроектные PR имеют намного большую площадь изменений, увеличивая вероятность конфликта в общей очереди слияния.
Распределённые: Крупные межпроектные PR от батчинга имеют выше вероятность конфликта, и каждое разрешение конфликта занимает 12-24ч.
Определение затронутых проектов

Партиционирование очереди: PR конкурируют только с PR, затрагивающими те же проекты, а не со всеми PR.

Aviator/Mergify разбивают очереди по затронутым областям
Aviator + merge queue tools
Задержка передачи (Handoff)

Более медленные циклы означают, что PR'ы накапливаются в очередях.

Глубина очереди пропорциональна латентности обработки
GitHub Merge Queue, GitLab CI/CD
Карта метрик — Stanislav Belyaev · Анализ — Anthropic Claude Opus 4.6 · Все данные проверены человеком