Ознаки, що система застаріла
Застарілість не завжди помітна зовні: сайт відкривається, замовлення обробляються. Але є симптоми, які варто сприймати серйозно:
- розробники відмовляються братися за доробки або називають за прості зміни несподівано великі оцінки;
- хостинг попереджає, що стара версія PHP чи бази даних незабаром перестане підтримуватися;
- після кожного оновлення щось ламається в несподіваному місці;
- система не вміє інтегруватися з потрібними сервісами: новою CRM, оплатою, мобільним застосунком;
- частина процесів живе в таблицях і ручних діях, бо «система так не вміє».
Переписати з нуля чи модернізувати частинами
Перше бажання — викинути старе і зробити все заново. Іноді це справді правильне рішення, але частіше воно обертається довгим проєктом, під час якого бізнес живе на старій системі без змін, а нова відтворює не всі дрібниці, на яких трималися процеси.
- Оновлення на місці. Переводимо систему на нові версії мови, фреймворку й бібліотек, виправляючи несумісний код. Найменш ризикований варіант, якщо архітектура загалом прийнятна.
- Поступова заміна. Нові частини будуємо поруч зі старими і перемикаємо на них функції одну за одною. Стара система «відмирає» поступово, а бізнес весь час працює.
- Повне переписування. Доцільне, коли код настільки заплутаний, що будь-яка зміна дорожча за нову розробку, або коли бізнес-процеси змінилися докорінно.
На практиці часто поєднуємо підходи: щось оновлюємо, а найслабші частини замінюємо.
Як працює поступова заміна
Уявімо стару систему, в якій замовлення, склад і звіти переплетені в одному коді. Ми не чіпаємо все одразу. Спершу виносимо, наприклад, каталог товарів у новий модуль на Laravel чи іншому відповідному фреймворку, налаштовуємо обмін даними зі старою частиною і перемикаємо на нього користувачів. Коли новий модуль стабільно працює, беремося за наступний.
Так кожен етап приносить користь одразу, а не лише в кінці проєкту. І якщо пріоритети бізнесу зміняться, можна зупинитися на будь-якому кроці, маючи робочу, хоч і частково оновлену систему.
Що найчастіше потребує модернізації
- сайти й магазини на старих версіях PHP і CMS, які вже не отримують оновлень безпеки;
- самописні системи без документації, які створив розробник, що давно пішов;
- внутрішні системи обліку та обробки замовлень, тісно прив’язані до одного сервера;
- інтерфейси на застарілому jQuery-коді, які складно змінювати й неможливо адаптувати під смартфони;
- обмін даними через файли й ручні вивантаження, який варто замінити на нормальні інтеграції.
Ризики і як ми їх зменшуємо
Модернізація завжди пов’язана з ризиком, і чесніше говорити про нього заздалегідь.
- Приховані правила. У старому коді живуть неочевидні правила: особливі знижки, винятки для окремих клієнтів. Ми розпитуємо користувачів і перевіряємо реальні дані, щоб нічого не загубити.
- Втрата даних. Перенесення виконуємо на копіях, порівнюємо результати зі старою системою і зберігаємо можливість повернутися.
- Зупинка роботи. Перемикання плануємо на тихий час і робимо невеликими частинами, а не однією нічною операцією.
- Затягування проєкту. Розбиваємо роботу на етапи з конкретним результатом, щоб ви бачили прогрес і могли змінювати пріоритети.
Як оцінюємо результат
Модернізація — не самоціль, тому на старті домовляємося, які зміни ви маєте відчути. Зазвичай це:
- система працює на версіях, які отримують оновлення безпеки, і хостинг більше не надсилає попереджень;
- нові функції та інтеграції додаються швидше і без побічних поломок в інших місцях;
- з’являється документація, і новий розробник може розібратися в системі без «усних переказів»;
- співробітники витрачають менше часу на ручні обхідні шляхи.
Після кожного етапу звіряємося з цими цілями і, якщо потрібно, змінюємо план наступних кроків.
Що підготувати з вашого боку
- доступ до коду, бази даних і серверів, а також будь-яку наявну документацію;
- людей, які щодня працюють із системою і можуть розповісти, як вона використовується насправді;
- перелік того, що найбільше заважає бізнесу зараз;
- плани на розвиток: які функції й інтеграції знадобляться найближчим часом.
Типові помилки модернізації
- Починати переписування без аудиту старої системи і дізнаватися про важливі функції вже після запуску нової.
- Заморожувати всі зміни в старій системі на довгий час, поки «будується нова».
- Оновлювати все одночасно — мову, фреймворк, базу даних і дизайн — так, що неможливо зрозуміти, яка зміна спричинила проблему.
- Не переносити разом з кодом знання: після модернізації знову немає ні документації, ні автоматичних перевірок.
Що впливає на вартість модернізації
- Розмір і заплутаність коду: наскільки важко зрозуміти, як працює система, і скільки в ній залежностей.
- Обраний підхід: оновлення на місці, поступова заміна чи переписування окремих частин.
- Обсяг і якість даних, які потрібно перенести.
- Кількість інтеграцій з іншими системами, які мають продовжувати працювати.
- Вимоги до безперервності: чи можна зупинити систему хоча б ненадовго, чи вона має працювати постійно.
Оцінку даємо після аудиту і поетапно: ви бачите, скільки коштує кожен крок і що він дає бізнесу.
Часті запитання
Чи можна модернізувати систему, яку створювала інша команда? Так, це найчастіша ситуація. Спершу ми розбираємося, як вона влаштована, і лише потім пропонуємо план.
Чи не простіше відразу зробити нову систему? Іноді так, і тоді ми прямо про це скажемо. Але часто поступова модернізація дешевша, менш ризикована і дає результат раніше.
Чи доведеться співробітникам переучуватися? Ми намагаємося зберегти звичну логіку роботи і змінюємо інтерфейс лише там, де це справді полегшить людям роботу.
Що буде після модернізації? Система отримує документацію, автоматичні перевірки й автоматичну викладку, а ми можемо взяти її на підтримку, щоб вона не застаріла знову.
Чому Promodex
Ми розробляємо сайти й системи з 2015 року, маємо 750+ проєктів і знаємо, що будь-який код колись старіє. Тому ставимося до старих систем з повагою: вони роками тримали бізнес і містять знання, які важливо не втратити. Усю роботу виконують наші люди в Києві, ми не залучаємо сторонніх виконавців, а ви на кожному етапі розумієте, що робиться, навіщо і скільки це коштує.