Кейс: Твой сервис 

Сервис доставки продуктов питания и блюд из ресторанов

О проекте

Твой сервис — мультиприложение, объединяющее несколько направлений бизнеса заказчика: доставку еды из ресторанов, доставку товаров из супермаркетов, внутренние сервисы магазинов и систему единой авторизации пользователей.

Проблематика и контекст разработки

За годы развития у заказчика сформировалось сразу несколько сервисов с похожей логикой, но разным функционалом. Проект начал развитие в 2019 году с FOODZO — маркетплейса и базовой платформы доставки. На его основе постепенно появились отдельные сервисы доставки из ресторанов, доставки из супермаркетов, маркетплейс-направления и собственная система идентификации пользователей MANNA ID.


Из-за длительного развития проекта и участия разных подрядчиков:

  • интерфейсы отличались друг от друга;
  • кодовая база становилась все более сложной;
  • пользователи путались в сервисах;
  • поддержка и развитие требовали все больше ресурсов.

Перед командой стояла задача создать единое приложение, которое:

  • объединяет несколько сервисов доставки;
  • работает с общей системой пользователей;
  • поддерживает разные роли и уровни доступа;
  • обеспечивает стабильность при высокой нагрузке;
  • сохраняет накопленную бизнес-логику прошлых проектов.

Дополнительно требовалось обновить визуальный стиль, адаптировать интерфейсы под новый бренд, сохранить совместимость с существующими системами заказчика и минимизировать время и стоимость разработки за счет переиспользования компонентов.

Цель

Разработать единый сервис доставки продуктов питания из супермаркета и блюд из ресторанов, объединив существующие направления бизнеса заказчика в единую цифровую экосистему с общим пользовательским пространством, централизованной системой авторизации и удобным интерфейсом.

Описание реализации кейса и творческого пути по поиску оптимального решения

Команда выбрала путь эволюционного развития вместо полного переписывания системы с нуля. За основу была взята существующая архитектура сервиса Манна. Такой подход позволил:

  • сохранить рабочую бизнес-логику;
  • быстро запускать новые сервисы;
  • сэкономить месяцы разработки;
  • минимизировать риски при масштабировании.

Одним из ключевых решений стало создание централизованного сервиса авторизации, который объединил пользователей всех сервисов в единую систему.

Также команда:

  • связала между собой сервисы доставки;
  • реализовала общую систему ролей;
  • внедрила интеграции с 1С;
  • настроила единые уведомления;
  • создала административные панели для ресторанов, магазинов и операторов.

При этом архитектура осталась гибкой: каждый сервис может развиваться независимо, сохраняя связь через общую инфраструктуру.


  1. Анализ существующей экосистемы

    • аудит сервисов Манна;
    • анализ пользовательских сценариев;
    • выявление пересечений функционала;
    • определение точек интеграции.


  2. Ребрендинг и обновление UX

    • обновление визуального стиля;
    • адаптация интерфейсов под новый бренд;
    • переработка пользовательского пути.


  3. Построение общей архитектуры

    • создание единой системы авторизации;
    • связывание сервисов через API;
    • настройка ролей и прав доступа.


  4. Разработка административной инфраструктуры

    • панели ресторанов;
    • панели магазинов;
    • роли курьеров и операторов;
    • аналитические инструменты.


  5. Интеграции и автоматизация

    • интеграция с 1С;
    • Telegram-уведомления;
    • Max-уведомления
    • Firebas;
    • S3-хранилище;
    • генерация YML-фидов для Яндекс.Маркета.


  6. Усиление безопасности и отказоустойчивости

    • защита от DDoS-атак;
    • ограничение серверных доступов;
    • двухфакторная авторизация.


Ключевые решения

Единая система пользователей

Административная панель стала центральной точкой авторизации для всей экосистемы. Пользователь получает единый аккаунт для всех сервисов.

Форк-архитектура

Команда использовала переиспользование существующих компонентов и кодовой базы, что значительно ускорило запуск новых направлений.

Единый каталог товаров

Для нескольких сервисов использовалась общая товарная база, что позволило избежать сложной синхронизации данных.

Гибкая ролевая модель

В системе реализованы:

  • роли ресторанов;
  • роли магазинов;
  • роли операторов;
  • роли курьеров;
  • разграничение доступа к данным и заказам.

Инфраструктура уведомлений

Система уведомлений охватывает:

  • push-уведомления;
  • SMS-авторизацию;
  • сервисные уведомления для администраторов.

Ключевые технологии

  • PHP
  • Laravel
  • Firebase
  • Telegram API
  • S3 Storage
  • REST API
  • Push Notifications
  • SMS Authentication
  • Role-Based Access Control (RBAC)

Языки и фреймворки:

  • PHP 7.4+
  • Yii2 2.0 (Basic Application Template)

Панель управления:

  • AdminLTE 2.x (Bootstrap 3 + jQuery 3.6)
  • TinyMCE / CKEditor (WYSIWYG-редакторы)
  • RBAC на основе Yii2 DbManager
  • Log Reader
  • Activity Logger
  • API:
  • REST API (v1, v2, v3) с токенной аутентификацией
  • OpenAPI / Swagger (swagger-cli, документация)
  • Yii2 HttpClient + Guzzle 7 (внешние HTTP-запросы)

Базы данных и хранилище:

  • MySQL 8.0 (несколько схем: основная, товары, доставка, маркетплейс)
  • Redis (кэш, сессии)
  • AWS S3 / Flysystem
  • Очереди и планировщик:
  • Yii2 Queue (database-драйвер)
  • Supervisor (управление воркерами)
  • Cron-задачи

Медиафайлы:

  • Yii2-Imagine + ImageMagick
  • Генерация штрихкодов 
  • Генерация QR-кодов
  • Gallery Manager

Интеграции:

  • Firebase Cloud Messaging 
  • 1C OData API 
  • Telegram Bot API
  • Яндекс.Карты + генерация YML-фидов для Яндекс.Маркет
  • Google API
  • SMS.RU + Releans 
  • phpspreadsheet 

Инфраструктура и DevOps:

  • Docker / Docker Compose (Nginx + PHP-FPM + MySQL + Redis)
  • Supervisor 

Мониторинг:

  • Sentry / GlitchTip 
  • Yii2 Debug Toolbar
  • File-логи

Архитектура:

  • MVC + Service Layer + Active Record
  • Repository Pattern
  • Многосхемная БД 
  • Версионирование REST API (v1/v2/v3)
  • Codeception (функциональные, REST API и unit-тесты)


Техническая архитектура

Архитектура проекта построена как набор взаимосвязанных сервисов:

  • сервис доставки еды;
  • сервис доставки товаров;
  • единый сервис пользователей;
  • административные панели;
  • система аналитики;
  • система уведомлений;
  • интеграционные сервисы.

Интеграции:

  • 1С для синхронизации заказов и товаров;
  • Firebase для push-уведомлений;
  • Telegram для системных уведомлений;
  • Яндекс.Маркет для SEO-фидов;
  • SMS-сервисы для двухфакторной авторизации;
  • S3-хранилище для файлов.

Безопасность:

  • двухфакторная авторизация по SMS/email;
  • ограниченный доступ между серверами;
  • защита от DDoS-атак;
  • разграничение ролей и прав доступа.

Кроссплатформенность:

На текущем этапе пользовательская часть реализована как мобильное приложение для iOS и Android.
В дальнейших планах — запуск веб-версии на едином технологическом стеке.


Результаты сотрудничества

В результате проекта заказчик получил:

  • единую экосистему сервисов;
  • централизованную систему пользователей;
  • обновленный бренд и интерфейсы;
  • масштабируемую архитектуру;
  • систему ролей и аналитики;
  • интеграцию с ключевыми внутренними системами;
  • устойчивую инфраструктуру для дальнейшего развития.


Проект стал для команды одним из самых масштабных и интересных продуктов в сфере digital-сервисов и доставки. В процессе развития мы постоянно внедряли новые функции, расширяли экосистему и улучшали пользовательский опыт, что позволяло сервису активно расти и укреплять позиции на рынке.

За время сотрудничества с заказчиком удалось выстроить сильное партнерство и высокий уровень доверия — многие технологические решения принимаются совместно, а команда выступает полноценным участником развития продукта.

Максим ЛунинBackend-разработчик

Результаты в цифрах:

  • более 137 000 зарегистрированных пользователей;
  • от 100 до 170 заказов ежедневно только в сегменте доставки еды;
  • единая инфраструктура для нескольких направлений бизнеса.

Проект продолжает развиваться: команда готовит обновление архитектуры, миграцию на современный стек и запуск новых пользовательских сценариев.