Grow Food: развитие логистической системы
Grow Food — сервис доставки правильного питания по подписке в Санкт-Петербурге и Москве. Ежемесячно сервис обрабатывает более 6 млн заказов, помогая оставаться в форме и экономить время на готовку
О клиенте
Grow Food — сервис доставки правильного питания по подписке в Санкт-Петербурге и Москве. Ежемесячно сервис обрабатывает более 6 млн заказов, каждый из которых помогает пользователям прийти в форму и освободить пару часов времени на готовку каждый день.
ИТ-команда Grow Food разрабатывает и развивает собственные решения: автоматизация производства и склада, обновление приложений и внутренних CRM. Внимание к пользователям позволяет Grow Food лидировать на рынке подписки на доставку здоровой еды и быть прибыльным. А клиенты получают возможность быстро и удобно оформлять заказ — ведь пользователями могут быть и пенсионеры, и занятые мамы с детьми.
При таких больших объёмах пользователей важно не только обеспечивать устойчивость сервиса, но и доставлять заказы вовремя и с нужным составом.
Именно поэтому команда Grow Food решила изменить существующую логистическую систему.
Задача
На оптимизацию логистики выделено много ресурсов: система должна уметь рассчитывать минимальный путь для каждого курьера, отслеживать передвижения заказа, оповещать клиентов об изменении статуса.
Заказы получают раз в 2-3 дня, и от того, насколько комфортно проходит взаимодействие с доставкой — от оформления заказа до его получения — зависит лояльность пользователей.
Благодаря заботе о клиентах, компания поддерживает высокий уровень удовлетворённости доставкой — на уровне 90%.
Вместе с развитием Grow Food было принято решение перевести бэкенд на микросервисы — так система становилась отказоустойчивой и легко масштабировалась. Параллельно нужно было оптимизировать логистическую систему: сделать процесс сборки и отслеживания заказа понятным и гибким.
Решение
Продуктовый аутстаффинг ИТ-специалистов
Команда Grow Food обратилась к нам за усилением внутренней ИТ-команды. Поиск специалистов уровня Middle+ / Senior в штат занимал много времени и тормозил процессы. Мы предложили рассмотреть разработчиков Holyweb соответствующего грейда. С момента обращения и обсуждения условий до вывода прошло 3 недели. При этом специалисты могли стартовать гибко, несмотря на неопределённость по дате старта
Одним из требованием к специалистам было умение работать с фронтендом — отдельную позицию для этого не выделяли, так как приоритетной задаче было перенос архитектуры на микросервисы. Часть фронтенда подверглась переиспользованию, и это не потребовало подключения дополнительного специалиста.
Наши специалисты на проекте работают с прямыми ожиданиями бизнес-заказчика. Поэтому важна автономность на проекте — возможность самостоятельно находить оптимальные решения, а не работать по готовым ТЗ и юзкейсам.
Разработка
Бэкенд
Разработка бэка идёт на PHP 8.1, Laravel версии 10 в качестве фреймворка, Postgres и Redis. Инфраструктура построена на Kubernetes.
Выбранные инструменты обеспечивают высокую скорость работы приложения, особенно в случаях, когда запросов много:
- Laravel сохраняет часто запрашиваемые данные в специальной области памяти, оптимизирует запросы к базе данных и обрабатывает задачи параллельно.
- PostgreSQL удобен для работы со структурированными данными, в то время как Redis используется для работы с ключами и значениями в памяти. В связке эти инструменты обеспечивают удобное управление и обработку больших объёмов данных.
Фронтенд
На фронтенде – Vue и фреймворк Quasar.
Компонентный подход Vue и Quasar сокращает время разработки за счет готовых к использованию компонентов.
Quasar позволяет разрабатывать кроссплатформенные приложения, а также обеспечивает адаптивность интерфейса для веб-приложений.
Разработка новой логистической системы
Прежняя версия админки поддерживала функции создания и управления заказами, назначение курьеров, работа с картой. В новой версии планировали улучшить функционал и сделать более гибкую настройку для разных пользователей.
Grow Food работает со сторонними сервисами курьеров. Для большей наглядности заказы курьеров разных подрядчиков отображаются на карте разными значками. Эти значки на карте можно выбирать группой и индивидуально, назначать на них по клику заказы.
- Удобное редактирование карты регионов через выделение рамкой или рисование свободного полигона.
- Можно перейти в настройки региона не покидая страницы.
- Сохранили возможность выбора заказа для исполнителя на экране “Голосование”. Это один из немногих процессов, где решили обойтись без автоматизации, чтобы курьеры сами регулировали свою загрузку. Поэтому за загрузкой курьеров и исполнением заказов следят бригадиры.
- Оптимизировали фильтры в таблице заказов, убрали неиспользуемые и сделали гибкую настройку под конкретных пользователей с возможностью добавлять или убирать колонки. Таблицы со статистикой вписали в адаптивный интерфейс, и это ускорило работу со страницей.
И ещё одним положительным изменением, но уже для команды разработки, стал генератор документации на библиотеке OpenAPI. Такой подход позволяет хранить базу знаний в одном месте и формировать читаемую документацию.
Результат
Подключение двух бэкенд специалистов на срок от полугода помогло команде GrowFood покрыть 90% бэклога по разработке новой логистической системы.
Команда разработки внедрила новую логистическую систему, основанную на микросервисной архитектуре.
Перевод сервиса на микросервисную архитектуру с использованием технологий Laravel, Redis и Postgres позволило повысить отказоустойчивость сервиса и сохранность пользовательских данных в условиях сбоев, связанных с перегрузкой, а также.сократить стоимость поддержки и развития системы.
Снизили время, которое требовалось логистической системы для синхронизации с админкой в 2 раза: теперь это в среднем 0,4 секунды вместо 1,1. Так запросы обрабатываются и отображаются в системе с большей скоростью.
Работа специалистов Holyweb получила положительный фидбек от Team Lead команды, а логисты и бригадиры — непосредственные пользователи сервиса — оценили интерфейс и производительность, сделали предложения по функциям.
В планах – переход со старой админки на новую логистическую систему. А сейчас новая система решает вопрос страховки на случай падения основного сервиса, частично переняв функционал.