Как постепенно переписать большое legacy-приложение на новый стек?
- Как перевести проект с jQuery или AngularJS на React без остановки разработки?
Переписывать всё с нуля — главный риск: годы без новых функций и вечная погоня за старой системой. Работает постепенная замена (strangler fig): новый стек встраивается в старое приложение — по страницам или виджетам, — новые функции пишутся сразу на новом, старые переносятся по приоритету, а метрики и тесты защищают от регрессий. Важны критерий завершения и план удаления старого кода.
- Начать с инфраструктуры: сборка, типы, тесты на критичных путях
- Мост между стеками: монтирование новых компонентов в старые страницы, общий роутинг и состояние
- Сначала самые изменяемые части — выгода появляется быстрее
А ещё Без измеримой цели (скорость разработки, производительность, найм) миграцию не защитить перед бизнесом
Подробно
План:
- Обоснование: какую проблему решает миграция и как её измерить.
- Подготовка: современная сборка рядом со старой, e2e-тесты на ключевые сценарии.
- Мост: новые компоненты монтируются в старые страницы, или новые страницы под тем же доменом и навигацией.
- Перенос по приоритету: часто меняемое и проблемное — первым.
- Удаление старого кода и зависимостей с контролем прогресса.
Риски: два стека надолго, дублирование логики, разный UX — поэтому важны сроки этапов и общая дизайн-система.
Что хотят услышать
- Постепенная замена вместо переписывания с нуля.
- Мост между стеками и тесты.
- Обоснование, приоритеты и завершение.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Остановить разработку и переписать всё с нуля
- ✗Переносить всё одной большой веткой и влить в конце, когда новый стек полностью готов к релизу
- ✗Оставить legacy навсегда без изменений
- ✓Strangler fig: новое внутри старого, новые функции сразу на новом стеке, перенос под тестами
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.