Технический долг, рефакторинг, миграция легаси
↑ 9.1 Техлид на бэкенде · ← Предыдущая · → Следующая
Зачем это на собесе
Как вы убеждаете бизнес выделять время на долг и безопасно меняете старую систему.
Объяснение
Технический долг — решения, ускорившие поставку сейчас за счёт стоимости изменений в будущем. Как финансовый долг: «проценты» — замедление разработки и рост рисков.
| Тип | Пример |
|---|---|
| Осознанный | «сделаем быстро, вернёмся» |
| Неосознанный | неопытность, незнание практик |
| Архитектурный | неверные границы, общая БД |
| Тестовый | нет тестов, хрупкие тесты |
| Инфраструктурный | устаревшие зависимости, ручной деплой |
| Документационный | нет знаний о системе |
Как управлять:
- Сделать видимым: реестр долга (issue-теги, ADR) с оценкой «стоимости» (замедление, риск).
- Приоритизировать по влиянию: что мешает чаще всего или создаёт риск инцидентов.
- Выделять бюджет: постоянная доля времени (например, 15–20% спринта) + долг рядом с изменяемым кодом («правило бойскаута»).
- Говорить языком бизнеса: «фича X занимает 3 недели вместо 1 из-за модуля Y; исправление за 2 недели окупится за квартал».
- Не делать «большой переписывание».
Рефакторинг: небольшими шагами под защитой тестов; сначала характеризационные тесты (фиксируют текущее поведение), затем структурные улучшения без изменения поведения.
Миграция легаси:
| Подход | Суть |
|---|---|
| Strangler Fig | новый функционал в новой системе, постепенный перенос маршрутов через прокси |
| Branch by abstraction | абстракция над старым кодом, переключение реализации флагом |
| Anti-Corruption Layer | изоляция старой модели |
| Параллельный запуск (shadow, dark launch) | сравнение результатов старого и нового |
| Feature flags | постепенное включение |
| Миграция данных | двойная запись, синхронизация, переключение чтения |
Нюансы и подводные камни
- «Переписывание с нуля» обычно дороже и дольше, чем кажется, и теряет неявные требования.
- Рефакторинг без тестов и без ограничений по времени превращается в бесконечный проект.
- Долг без владельца не закрывается.
- Не любой «плохой код» — долг: если код не меняется, его исправление может не окупиться.
Практика
- Заведите реестр из 10 долгов с оценкой влияния и стоимости.
- Составьте план Strangler Fig для одного модуля.
- Подготовьте аргументацию для менеджера: цена бездействия в днях разработки.
Вопросы с ответами
Как убедить бизнес заняться техдолгом?
Показать влияние на сроки и риски в цифрах и предложить ограниченный, измеримый план.
Что такое Strangler Fig?
Постепенное замещение старой системы новой по функциям через прокси, пока старая не станет ненужной.