🔧 Как оживить легаси-проект и не сломать продакшен
Проблема — развитие упёрлось в старые технологии 😬
Аплаут — сервис отзывов для крупных интернет-площадок. Продукт успешно рос много лет, но внутренняя техническая база постепенно стала ограничением.
Команда столкнулась с типичной ситуацией зрелого проекта:
- Устаревшие версии Ruby и Rails.
- Сложные зависимости между внутренними модулями.
- Старые библиотеки без поддержки.
- Долгое внедрение новых возможностей.
- Рост времени на поддержку кода.
Когда каждая новая функция требует больше усилий, продукт начинает терять темп.
Решение — модернизация по этапам ⚙️
Чтобы не останавливать сервис, обновление проводили постепенно.
🐳 Шаг 1. Docker вместо хаоса
Раньше запуск проекта зависел от устройства разработчика. Особенно это мешало на новых процессорах.
После перехода на Docker команда получила:
💎 Шаг 2. Ruby и Rails
Переход выполнили не рывком, а шаг за шагом:
- Обновляли Ruby до следующей версии.
- Поднимали Rails.
- Проверяли тесты.
- Исправляли несовместимости.
Некоторые библиотеки пришлось дорабатывать вручную, а часть — переносить в собственные форки.
🗄️ Шаг 3. База данных без остановки
Сервис работает постоянно, поэтому downtime был недопустим.
Команда внесла патчи в проблемный драйвер и обновила инфраструктуру без отключения клиентов. 🔥
⚡ Шаг 4. Ускорение CI/CD
Более 1500 тестов замедляли релизы.
Результат — проект снова дышит 🌟
Аплаут получил современный стек:
Команда уже начала перенос фронтенда на React и готовится к новым архитектурным шагам.
Иногда легаси — это не проблема, а история роста. В Evrone умеют читать такие истории между строк кода.