Що вважаємо legacy
Не вік коду, а те, скільки він коштує. Стара система стає проблемою, коли її неможливо оновити без страху щось зламати, коли нового розробника не знайти, бо ніхто не хоче працювати з цим стеком, коли хостинг вимагає підняти версію PHP, а код на ній не запускається. Якщо система стара, але стабільна, дешева в підтримці і в неї є хто вносити зміни, чіпати її не варто, і ми так і скажемо.
Два шляхи
Перший, оновлення на місці: підняти версію PHP, замінити мертві залежності на живі, додати тести навколо критичних сценаріїв, налаштувати нормальний деплой. Система лишається тією самою, але перестає бути бомбою. Це швидший і дешевший шлях, і часто його достатньо.
Другий, поступова міграція на Laravel або Symfony. Не переписування з нуля, а перенесення модуль за модулем: нова система стає поруч зі старою, забирає одну функцію, потім другу, стара система поступово порожніє. Бізнес увесь час працює на робочій версії, а не чекає на «великий реліз», який зазвичай спізнюється на пів року.
Який шлях ваш, стає зрозуміло після аудиту. Іноді відповідь така: перший шлях зараз, другий за рік, коли з'явиться бюджет.
Що робимо на практиці
Спершу тести навколо того, що не можна зламати: оплата, реєстрація, звіти, інтеграції з іншими системами. Без них модернізація сліпа. Потім база даних: структура, індекси, дані, які накопичувались роками без правил. Потім код, від найболючішого модуля до найспокійнішого.
Кожен крок деплоїться окремо. Якщо щось пішло не так, відкочуємо один крок, а не місяць роботи.
Що лишається після нас
Система на підтримуваній версії PHP і фреймворку, який знає ринок. Тести, які ловлять регресії. Документація, з якої ваш наступний розробник зрозуміє, що де лежить. І жодних власних обгорток над фреймворком: стандартний Laravel або Symfony у тому вигляді, як їх описує документація.
Скільки триває
Залежить від розміру системи і від того, скільки модулів справді потрібно переносити. Тому оцінка приходить після аудиту, розбита на етапи, і кожен етап має сенс сам по собі. Якщо зупинитись після другого, ви все одно отримали кращу систему, ніж мали.