BEE-online рефакторинг проекта
Онлайн сервис для поиска партнеров в сфере легкой промышленности.
Масштабный рефакторинг многопользовательской платформы с личными кабинетами, монетизацией и телефонией
Провели масштабный рефакторинг backend и frontend частей проекта. Полностью пересобрали архитектуру контроллеров, внедрили сервисный слой, стандартизировали подход к валидации и форматированию ответов, оптимизировали работу с базой данных, добавили OpenAPI-документацию и улучшили безопасность.
Клиент
Bee-online
Язык программирования
PHP, JS, фреймворк: Laravel 11, Nuxt 3
База данных
MySQL
Контейнеризация
Docker
Веб-сервер
Nginx
Сроки реализации проекта
Август 2024 - Апрель 2025
Проблема
При развитии платформа столкнулась с рядом проблем
Проект развивался, добавлялись новые функции, что-то устарело, копился технический долг
Добавление новых функций стало затруднительно
Переход на новые версии Laravel и PHP был практически невозможен из-за несовместимости новых версий с имеющимся кодом
Длительность ответа сайта при больших запросах занимала много времени
Изначальная архитектура не позволяла эффективно масштабироваться по мере увеличения нагрузки
Задачи рефакторинга
Улучшение читаемости кода
Устранение технического долга
Повышение производительности
Облегчение масштабируемости
Этапы
Анализ текущего состояния сайта
- Оценка существующего кода и архитектуры
- Выявление проблемных зон и областей, требующих улучшения
- Сбор статистики о производительности и нагрузке
Проектирование новой структуры платформы
- Разработка схемы компонентов и их взаимодействия
- Прототипирование и валидация архитектуры
Рефакторинг кода
- Улучшение структуры, удаление дублирования, оптимизация алгоритмов и так далее
- Периодическая проверка работоспособности с помощью тестов
Тестирование и документация
- Автотестирование
- Ручное тестирование
- Описание процессов в документацию
Внедрение изменений
- Деплой обновленной версии платформы на продакшн-сервер
- Мониторинг работы системы после внедрения изменений для выявления возможных проблем
Основные изменения
Сервер
Стали использовать контейнеризацию Docker для удобного управления Laravel 11, Nuxt 3 и их зависимостями в единой контейнеризированной среде
Фронтенд
- Переход с jQuery на фреймворк Nuxt3
- Периодическая проверка работоспособности с помощью тестов
- Использование Pinia вместо манипуляций с глобальными переменными и элементами DOM
- Полная перезагрузка страниц изменена на подгрузку необходимых компонентов
- Четкое разделение на слои: UI-компоненты, бизнес-логика, работа с API
- Интеграция с бэкенд валидацией и унифицированной системой ошибок
Бэкенд
- Проект обновлён с PHP 7.4 до 8.3
- Проект переведён с Laravel 8 на 11
- Использование meilisearch для поисковой индексации
- Переход с Pusher на Soketi, чтобы избавиться от внешней зависимости
- Переход с Nova на MoonShine для админ-панели
- Обработка внешних запросов реализована через очередь
- Аутентификация переведена с сессий на JWT
- Приложение переведено с серверного рендеринга на API
- Бизнес-логика вынесена из контроллеров в сервисные классы
Результаты и преимущества проекта
Мы провели масштабный рефакторинг frontend и backend частей проекта, полностью пересобрав архитектуру контроллеров. Внедрили сервисный слой, стандартизировали подход к валидации и форматированию ответов, оптимизировали работу с базой данных, добавили OpenAPI-документацию и улучшили безопасность. Выполнили переход с jQuery на современный стек Nuxt 3. Реализовали модульную структуру приложения.
Простая и понятная структура
Мы чётко разделили, кто за что отвечает: одни части системы обрабатывают запросы от пользователей, другие выполняют внутреннюю логику. Это сделало код чище, проще и удобнее для работы всей команды
Одинаковый подход во всём проекте
Всё оформлено в едином стиле. Это как единый стандарт: помогает легко ориентироваться в проекте, быстро подключать новых разработчиков и экономить время на поддержке
Быстрая работа с данными
Мы оптимизировали загрузку информации из базы. Теперь всё работает быстрее, а сервер не перегружается — даже если данных очень много
Понятный и предсказуемый API
Каждый запрос и ответ чётко описан: какие данные ожидаются, какие возвращаются. Благодаря этому интеграция с мобильными и веб-приложениями происходит быстро и без лишних вопросов
Гибкость в отображении данных
Мы отделили логику от оформления ответа. Это значит, что внешний вид данных можно легко изменить без риска «сломать» внутреннюю логику
Поддержка сложных данных
Провели комплексное тестирование системы, убедившись в ее стабильности и надежности, и запустили в эксплуатацию
Высокий уровень безопасности
Мы ввели строгую проверку данных, надежную защиту паролей и гибкое управление доступами — система надежна и устойчива к ошибкам
Работа с файлами — просто и безопасно
Загрузка, хранение и удаление файлов (например, документов или изображений) реализованы с учетом всех ограничений: форматы, размеры, безопасность. Это удобно и безопасно для пользователей
Простота тестирования
Так как все части системы разделены, их можно удобно проверять — как вручную, так и автоматически. Это экономит время и повышает стабильность при внесении изменений
Готовность к развитию
Мы создали архитектуру, которая легко расширяется. Добавить новую роль, статус или возможность — теперь не проблема. Всё построено так, чтобы не мешать существующим функциям
Современный пользовательский опыт
Создали быстрый интерактивный интерфейс с плавными переходами и адаптивным дизайном
Модульная архитектура
Была внедрена модульная система, которая кардинально улучшает структуру кода, упрощает поддержку и ускоряет разработку. Реализовали четкое разделение функционала на независимые, переиспользуемые модули
Мы не просто навели порядок в коде — мы создали прочный фундамент для долгосрочного развития проекта
Система теперь легко масштабируется, быстро дополняется и готова к полноценной работе в продакшне и внешней интеграции
Напишите нам, если хотите так же