Помогли вырасти из MVP сервису гиперлокальной доставки
Рассказываем историю трансформации из стартапа по доставке в международную логистическую AI-платформу.
Master Delivery — компания, которая развивает SAAS-сервис гиперлокальной доставки. Логистическая платформа на основе искусственного интеллекта анализирует сотни факторов, чтобы гарантировать постоянную нагрузку на «последней миле» — самом дорогом и сложно прогнозируемом этапе доставки.
Их технологии можно разделить на три группы: логистический движок (операционное управление доставкой), геоинформационная система (анализ территории доставки) и алгоритмическая часть (предсказание спроса, расчет и построение маршрута) Всё это позволяет существенно снижать стоимость доставки для логистических компаний. А ещё Master Delivery развивает собственный сервис доставки «Прямиком», доставочные операции в котором выполняют работающие по модели франшизы курьерские компании
Проблемы роста
Компания запустилась в 2020 году как MVP, и очень быстро выросла. За 9 месяцев 2021 года компания сделала 1 млн доставок, а к ноябрю уже удвоила этот показатель, всего за 2021 год с помощью сервисов Master Delivery доставили товаров на 5 млрд рублей . Из-за взрывного роста компании пришлось быстро увеличивать технологическую команду, которая на ходу смогла бы превратить MVP в полноценный сервис и масштабировать SAAS-решение.
В Evrone компания обратилась в поисках Python-программистов, которые смогли бы усилить backend-команду. «Нужно было подключиться к работе по строительству новой структуры сервисов и увеличению производительности», — вспоминает Михаил Майоров, CTO Master Delivery. С Master Delivery мы быстро стали одной дружной командой.
Повышаем производительность
Эта проблема стала одной из основных, над которой мы работали на проекте. Из-за того, что первоначальная версия писалась быстро, во многом код был не оптимальным и многое приходилось рефакторить в процессе дальнейшей работы.
Когда проект начал быстро расти производительность стала узким местом. Например, в сервисе пересчёта зон доставки очень много вычислений, и он реализован на чистом Python. При росте нагрузке там начинались проблемы. Кое-где вместо одного запроса использовались целые циклы, так что часть проблем мы решили просто переписав запросы к базам.
Вместе с собственной командой клиента мы работали над интеграцией библиотек, которые могли бы взять на себя числовую часть. Это довольно распространённый способ повышения производительности, но перед нами стояла задача выжать максимум из этой возможности. Поэтому специалисты Evrone занялись векторизацией запросов. Это помогло ускорить некоторые этапы работы алгоритма на 1,5-2 порядка. Сгруппировав простые запросы, команде удалось ускорить сервис расчёта геозон в небольших городах в пять раз!
Обновляем архитектуру
Проект работает на базе Kubernetes, это даёт большие возможности для масштабирования архитектуры приложения. Из-за того, что изначально сервисов было значительно меньше, команде клиента пришлось решать структурные проблемы. Прежние решения переставали работать при постоянно растущем числе микросервисов. Поэтому вместе мы поработали над архитектурой и стилистикой, придумать новые способы взаимодействия сервисов, их интеграцию.
Часть сервисов пришлось адаптировать к Kubernetes. Перед командой стояла классическая задача сохранить поведение сервиса, но сделать это в другом окружении и с большей производительностью. Новые сервисы изначально разворачиваются на этой платформе, поэтому их интеграция уже поставлена на поток. Сейчас в проекте 20 микросервисов, и их число будет расти.
Интегрируем мерчантов
Конкурентное преимущество продукта Master Delivery — алгоритмы, которые с помощью искусственного интеллекта оптимизируют доставку на «последней миле». Снизить стоимость может полная загрузка: на одном маршруте курьер может доставлять разные товары разных продавцов. Это уменьшает простои и снижает стоимость доставки. Для того, чтобы заказы были всегда, алгоритму нужно предугадывать спрос не только на день, но и на каждый час, знать, какие товары наиболее актуальны в данную минуту, и, конечно, просчитывать все возможные точки отказа и сценарии их замены.
Это уникальное решение компания реализует по SAAS-модели для других крупных компаний. Пока подключение новых пользователей носит полуавтоматический характер, например, совместимость с разными API, приходится делать руками, также как и вносить необходимые данные и настройки. С ростом проекта это начинает отнимать слишком много времени и требует полной автоматизации. Поэтому сейчас команда Master Delivery продумывает гибкий микросервис для автоматизации подключения мерчантов. Эта работа только начинается, но в ней уже помогает data scientist Evrone.
Порядок в тестовом окружении
В тестировании проект столкнулся с типичной проблемой при масштабировании. Тестовых стендов мало, а задач становится много, разработчики путают ветки, тестируют разные задачи на одном стенде, из-за чего, естественно, ничего не работает.
Новый подход позволил сделать тестирование более комфортным как для QA, так и для команд разработки. Каждая команда получила отдельный стенд для тестирования своих задач, окружение сделано на Docker compose Stack. За работу стенда и поддержание его в чистоте отвечает конкретный человек в каждой команде. Это не только ускорило тестирование, но и сняло проблему в синхронизации разных команд. «Ребята из Эврон здорово выручили нас, придя на помощь там, где не хватало рук в условиях взрывного роста бизнеса», — делится Антон Вишняков, QA lead Master Delivery.
Планы: версия 2.0 и дальнейшее масштабирование
У сервиса огромные возможности масштабирования, поэтому в первый же год Master Delivery смогли пройти путь от единичных заказов в Ханты-Мансийске до 3 млн доставок в год и развернуть франшизный бизнес в 14 странах мира. Очевидно, что проект будет расти, и для более плавного расширения требуется изменить подход к его работе. Поэтому сейчас команда работает в том числе и над версией 2.0.
От бизнес-задач к микросервисам
Технологические особенности второй версии не подлежат разглашению, но точно изменится подход к работе проекта. Сейчас команды делятся по бизнес-задачам, поэтому бывают ситуации, когда несколько команд параллельно работают над изменениями в одном и том же микросервисе. Это создаёт угрозу стабильности. В новой версии за каждой командой будет закреплён свой микросервис, что нивелирует текущие риски. В архитектуре будет больше порядка и команды будут ощущать ответственность за стабильную работу своего сервиса.
Master Delivery — это история стремительного роста. И Evrone рад быть частью этой истории. Мы продолжаем работать над проектом вместе с другими разработчиками и вместе делаем продукт лучше. Если вы находитесь в поиске Python-специалистов, которые бы смогли бы помочь с разработкой SAAS-продукта, быстро усилить существующую команду и взять на себя часть задач, напишите нам.