Exabit Logo

Backend агрегатора доставки еды

Разработали микросервисный backend для регионального сервиса доставки: 150+ ресторанов, 300+ курьеров, 5K+ заказов в день с аптаймом 99.9%.

Доставка 2024 · 6 месяцев
Node.js NestJS PostgreSQL Redis RabbitMQ Docker

32 мин

среднее время доставки

Алгоритм маршрутизации курьеров с батчингом заказов сократил время с 50 до 32 минут

5K+

заказов в день

Микросервисная архитектура держит пиковые нагрузки без деградации (раньше падал при 2K)

99.9%

аптайм сервиса

Мониторинг + автоскейлинг: за 6 месяцев эксплуатации ни одного серьезного простоя

Задача

Региональный сервис доставки еды с 150+ ресторанами-партнерами и 300+ курьерами работал на монолитном backend. При 2K заказов в день система начинала тормозить, а в пиковые часы падала. Среднее время доставки составляло 50 минут — курьеры распределялись вручную диспетчером. Нужно было переписать backend на микросервисы, внедрить алгоритм маршрутизации курьеров и обеспечить стабильную работу при растущей нагрузке.

Что было до нас

Монолитный backend падает при пиковых нагрузках (2K+ заказов)

Курьеры распределяются вручную — среднее время доставки 50 минут

Нет батчинга заказов — курьер возит по одному заказу за раз

Нет автоскейлинга — в пиковые часы клиенты ждут или уходят

Решение

Микросервисный backend с оптимизацией доставки

Микросервисная архитектура

Отдельные сервисы: заказы, рестораны, курьеры, платежи, уведомления. Каждый масштабируется независимо.

Маршрутизация курьеров

Алгоритм учитывает загрузку, расстояние, зоны и батчит заказы. Один курьер забирает 2-3 заказа по пути.

Интеграция с ресторанами

API для приема заказов, управление меню, стоп-листы в реальном времени. Ресторан видит заказ через 3 секунды.

Платежный шлюз

Предавторизация, холдирование, возвраты, чаевые курьеру. Все транзакции проходят за 2 секунды.

Real-time трекинг

Обновление статусов в реальном времени. Клиент видит курьера на карте и прогноз времени доставки.

Мониторинг и автоскейлинг

Prometheus + Grafana, алерты при аномалиях. Автоскейлинг добавляет мощности при пиковых нагрузках.

Мониторинг доставки в реальном времени

5 247

заказов сегодня

284

курьеров на линии

32 мин

среднее время доставки

Загрузка курьеров 87%
Заказы доставлены вовремя 94%
Батчинг (2-3 заказа на курьера) 68%
API ресторанов Платежный шлюз Трекинг курьеров Уведомления

До

Монолит, падает при 2K заказов

Ручное распределение курьеров

Среднее время доставки: 50 мин

Нет трекинга для клиента

После

Микросервисы, 5K+ заказов стабильно

Автоматическая маршрутизация

Среднее время доставки: 32 мин

Курьер на карте в реальном времени

Результаты

Среднее время доставки: с 50 до 32 минут

Алгоритм маршрутизации с батчингом заказов оптимизирует маршруты курьеров автоматически

Пиковая нагрузка 5K+ заказов без деградации

Микросервисная архитектура + автоскейлинг, раньше система падала при 2K заказов

Аптайм 99.9% за 6 месяцев эксплуатации

Мониторинг Prometheus + Grafana, автоматические алерты и автоскейлинг при аномалиях

Стоимость инфраструктуры снизилась на 25%

Автоскейлинг добавляет ресурсы только при пиковых нагрузках, в остальное время экономит

Нужен подобный проект?

Расскажите о задаче - предложим решение и дадим оценку сроков.