Авторизация
Сброс пароля
Модернизация legacy-платформы Aplaut: обновление Ruby on Rails без остановки сервиса
Заказчик: Aplaut
Страница кейса/результат: https://evrone.ru/portfolio/aplaut

Команда Evrone провела комплексную модернизацию десятилетней Ruby on Rails-платформы Aplaut. Мы обновили технологический стек до Ruby 3.4 и Rails 8, ускорили процессы разработки, оптимизировали инфраструктуру и подготовили систему к дальнейшему масштабированию без простоев и рисков для бизнеса.
1. Вводная задача от заказчика, проблематика, цели
Aplaut — платформа для сбора, модерации и публикации пользовательских отзывов для крупных интернет-магазинов и брендов. За годы развития продукт накопил значительный технический долг, который начал ограничивать возможности дальнейшего развития.
Основные сложности проекта:
- Устаревший стек Ruby и Rails препятствовал внедрению новых возможностей и современных библиотек.
- Архитектура на базе Rails Engines усложняла любые глобальные изменения из-за большого количества взаимосвязанных зависимостей.
- Используемые библиотеки и SDK не обновлялись многие годы и потеряли совместимость с актуальными версиями языка и фреймворка.
- Сложная инфраструктура затрудняла воспроизводимость среды разработки и подключение новых специалистов.
- Любая ошибка при обновлении могла повлиять на работу клиентских сервисов и процессов сбора отзывов.
Цель проекта
Выполнить поэтапную модернизацию технологического стека без остановки сервиса, снизить технический долг, ускорить процессы разработки и подготовить платформу к дальнейшему развитию.
2. Описание реализации кейса и творческого пути по поиску оптимального решения
Для реализации проекта Evrone выделила senior-разработчика с глубокой экспертизой в Ruby on Rails, инфраструктуре и модернизации legacy-систем.
Этап 1. Контейнеризация проекта
- Полностью упаковали приложение в Docker.
- Устранили зависимость от конкретного оборудования и операционных систем разработчиков.
- Сократили время развёртывания локальной среды с нескольких дней до нескольких часов.
Этап 2. Последовательное обновление Ruby и Rails
- Провели пошаговую миграцию с Ruby 2.7 до Ruby 3.4.
- Параллельно обновляли версии Rails до актуального релиза.
- После каждого шага выполняли полное тестирование и устранение несовместимостей.
- Исправили конфликты старых библиотек, влияющих на загрузку изображений, локализацию и бизнес-логику.
- Для ряда неподдерживаемых библиотек создали собственные форки и адаптировали их под современные версии Ruby.
Этап 3. Работа с критическими изменениями языка
- Вручную проанализировали и проверили масштабный набор изменений, связанный с новыми правилами обработки аргументов в Ruby 3.
- Совместно с технической командой заказчика провели детальную валидацию бизнес-логики и исключили риски регрессий.
Этап 4. Обновление слоя работы с базой данных
- Сохранили непрерывную работу сервиса без даунтайма.
- Обновили драйверы MongoDB без необходимости миграции данных.
- Проанализировали исходный код сторонних зависимостей.
- Разработали собственный патч для восстановления совместимости после изменений в библиотеке Mongoid.
Этап 5. Оптимизация DevOps и процессов тестирования
- Перестроили CI/CD-процессы.
- Настроили параллельное выполнение тестов.
- Оптимизировали Docker-образы и уменьшили их размер почти в два раза.
- Повысили скорость доставки изменений и контроль качества кода.
3. Результаты сотрудничества
За 3,5 месяца команда Evrone выполнила комплексное обновление платформы и создала фундамент для дальнейшего развития продукта.
- Технологический стек обновлен до Ruby 3.4 и Rails 8.
- Обеспечена стабильная работа системы без остановки сервиса в процессе модернизации.
- Время выполнения тестов сокращено с 25 до 10 минут.
- Размер Docker-образов уменьшен примерно с 1,2 ГБ до 640 МБ.
- Развертывание среды разработки стало быстрым и воспроизводимым.
- Снижены риски, связанные с устаревшими зависимостями и инфраструктурой.
- Команда заказчика смогла сосредоточиться на продуктовых задачах вместо решения технического долга.
- Создана технологическая база для дальнейших изменений, включая развитие фронтенда и будущую миграцию данных.
Ключевой бизнес-результат
После завершения модернизации заказчик получил возможность быстрее внедрять новые функции и развивать продукт без ограничений, связанных с устаревшим стеком.
4. Заключение
Legacy-системы часто становятся препятствием для роста бизнеса: каждое новое изменение требует всё больше времени, а накопленный технический долг постепенно снижает скорость развития продукта. Однако масштабная модернизация не обязательно должна отвлекать внутреннюю команду от ключевых бизнес-задач.
В проекте Aplaut специалисты Evrone полностью взяли на себя инфраструктурное обновление, сохранив стабильность сервиса и обеспечив безопасный переход на современный технологический стек.
Результатом стала не только актуализация Ruby on Rails-платформы, но и создание надежной основы для будущего масштабирования, ускорения разработки и внедрения новых возможностей продукта.


