Хабрахабр

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

Меня зовут Денис. Привет! Мы разрабатываем сервисы «Доставка» и «Краткосрочная аренда» и делаем их использование удобным, понятным и безопасным. Я руководитель направления SafeDeal в Авито. Казалось бы, что здесь такого и зачем посвящать этому целую статью? В марте этого года мы запустили сервис доставки товаров между частными пользователями. Доставка есть у всех интернет-магазинов, многие покупатели ей пользуются и больших трудностей с этим сервисом не возникает.

Проблем нет, если продавец — юридическое лицо, представитель компании. Да, это так. С учетом того, что Авито ежемесячно посещает более 34 миллионов пользователей, мы понимали, что передачу товара от продавца к покупателю с помощью нашего сервиса нужно сделать максимально простой. Но когда к этому процессу с обеих сторон подключаются частные покупатели и продавцы, появляется ряд интересных задач и проблем, которые нужно решать. И покажу немного внутренностей сервиса: его механику и архитектуру. В статье я расскажу о предпосылках запуска доставки между частными пользователями на Авито, о проблемах, с которыми мы сталкивались, и том, как мы их решили благодаря договоренностям с нашими партнерами и вниманию к деталям.

Расширить ассортимент товаров для каждого

Но если, например, вы живете в Воронеже и завтра захотите купить лыжные ботинки 44 размера на Авито, в вашем городе (на момент написания статьи) найдётся только четыре нужных объявления. Авито — это десятки тысяч маленьких сообществ продавцов и покупателей в каждом населенном пункте. При поиске по всей России вы увидите 377 объявлений. Не очень большой выбор. Выбор увеличивается в 94 раза.

Часто это оказывалось дороже. Иногда из-за отсутствия выбора или нежелания заниматься логистикой доставки товара из другого региона покупатели уходили с Авито и искали нужный им товар в интернете и в местных магазинах. То есть, хотя на Авито было то, что нравилось покупателю, он не решался это покупать. А купленный новый товар не всегда был лучше. Мы хотели исправить ситуацию.

Решить проблемы межрегиональных продавцов и покупателей

Она говорит нам, что частные пользователи ежегодно заключают между собой 63 миллиона сделок. У нас есть аналитическая модель, которая с высокой достоверностью считает, сколько сделок совершается на Авито. Конечно, расстояние вносит определенные трудности в этот процесс. Четверть из них — межрегиональные.

Покупая товар из другого региона, люди зачастую вносили за него предоплату. До запуска доставки межрегиональная сделка отчасти была неким «прыжком веры». А если пользователи договаривались, что покупатель заплатит после получения товара, то рисковал уже продавец. И нервничали, полагаясь на добросовестность продавца. Продавец отправлял посылку почтой с указанием ее стоимости, а покупатель забирал товар и платил за его получение. Иногда использовался наложенный платеж. Но и наложенный платеж не решал всех вопросов: получатель должен был заплатить по факту доставки, без возможности проверить содержимое и убедиться, что там лежит (например) iPhone, о покупке которого договорились с продавцом, а не кирпич. Затем деньги уходили отправителю.

Мы всегда старались помочь пользователям, но прежде всего выступали как «инфраструктурный мост» между людьми, не принимая участия в сделке. Кроме того, часто возникали противоречия, кому именно платить за саму услугу доставки, и сделки из-за этого не совершались. Эта ситуация нас не устраивала. Авито соединял продавца и покупателя, а дальнейшие договоренности и их добросовестное исполнение оставались на совести пользователей. Вопросы доверия и безопасности имеют не меньшее значение. Покупка товара с выгодой — не главный критерий успешности сделки на сайтах объявлений. Мы хотели создать надежный сервис, который сделает процесс совершения сделок проще, удобнее и безопаснее.

Привлечь новых покупателей

Но не все пользуются сервисом. Трудно найти в России человека, который бы не слышал про Авито. Поэтому мы защитили сделки с доставкой, чтобы люди, которые прежде не решались покупать и продавать товары на Авито, попробовали наш сервис, пользуясь удобной механикой. Кому-то просто не нравится встречаться лично с продавцом, разбираться в особенностях отправлений посылок, переводить деньги на неизвестные счета и карты.

Механика

Покупатель выбирает товар, нажимает «Купить с доставкой» и оплачивает товар и доставку банковской картой. Мы постарались сделать механику использования доставки на Авито простой и понятной. Продавец получает подтверждение об оплате, и у него есть два дня, чтобы отнести товар в пункт приема. До получения товара деньги резервируются на эскроу-счете банка. В пункте выдачи покупатель называет код из смс и получает товар. Когда товар прибыл на пункт выдачи, покупатель должен забрать посылку в течение трех дней. После получения покупателем товара, продавцу приходит сообщение на Авито. Его можно проверить в течение 15 минут, после чего покупка подтверждается. Сделка совершилась. Он привязывает свою банковскую карту — на нее перечислят деньги с эскроу-счета.

Архитектура

В этом разделе я расскажу о внутренностях продукта и сервисах, которые отвечают за работу на этапе покупки, доставки и при получении товара.

Покупка

Бэкенд сайта Авито «общается» с двумя системами:
1. Когда пользователь выбирает товар через сайт или мобильное приложение Авито, он отправляет запрос в сервис Avito-Site. Billing — направляет запрос в QIWI, «Тинькофф». Avito Delivery Core — обращается в службу доставки.
2.

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

Сервисы, которые здесь участвуют

Avito-Site. Отправляет запросы.
Calculation. Хранит тарифы и знает, сколько будет стоить доставка с учетом выбранной категории товара.
Terminal Keeper. Находит пункты самовывоза в городе получателя.
Delivery-Geo. Хранит информацию о возможности доставки в определенный город и о сроках доставки.

Схема работы сервисов

От оплаты к доставке

На этом этапе фактически создается заказ.

Сервисы, которые участвуют на этом этапе

Если прошли сроки оплаты, заказ покупателя необходимо инвалидировать.
Calculation. Рассчитывает стоимость доставки.
Callback-Processor. Оповещает Avito-Site об изменениях в заказе.
Order-Keeper. Сервис, как некая обертка над базой с API. Avito-Site. Отправляет запросы к другим сервисам.
Order-Controller. Проксирует вызовы к нашим другим внутренним сервисам и проводит первоначальную валидацию данных, поступивших от бэкенда Avito-Site.
Order-Expiration. Отслеживает сроки существования заказа. В нем еще происходят некоторые бизнес-валидации, и после этого он отдает номер заказа в Order-Controller.

Схема работы сервисов

Бэкенд Avito-Site стучится в Billing, который работает с QIWI или Тинькофф, и заказ оплачивается. Когда Order-Controller отправил всё, что должен, и получил номер заказа, он передает Avito-Site информацию: «Все прошло успешно».

После успешной оплаты бэкенд Avito-Site стучится в наш сервис Order-Controller, сообщая: «Подтверждение прошло успешно».

Order-Keeper проверяет правильность статуса. Следующий шаг — Order-Controller снова стучится в Order-Keeper, сообщая: «Заказ подтверждаем». Если проверка пройдена успешно, сервис переводит статус на подтверждение службе доставки. (Вдруг такой товар уже был доставлен, отменен или с ним еще что-то случилось).

Теперь у продавца есть от двух до четырех дней, чтобы отнести товар на пункт самовывоза. Далее Order-Controller стучится в сервис Order-Expiration, и говорит, что фаза оплаты покупателем заказа закончена. Если продавец не успеет, то сервис отменит заказ, а деньги вернутся покупателю. Order-Expiration следит за этими сроками.

Доставка

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

Какие сервисы здесь работают

Avito-Site. По-прежнему отправляет запросы.
Order-Controller. Проксирует вызовы к другим внутренним сервисам и валидирует данные, поступившие от бэкенда Avito-Site.
Order-Keeper. Хранит номер заказа и информацию об оплате заказа.
Delivery-Registrator. Отвечает за регистрацию заказа непосредственно в службе доставки.
Delivery-Submitter. Регистрирует и отменяет заказ, отдает номер, присвоенный службой доставки, нашим сервисам.
Status-Manager. Хранит все статусы по нашей версии, валидирует входящую информацию и оповещает об этом нужные сервисы.
Callback-Processor. Оповещает Avito-Site, что заказ оплачен.
Messenger. Присылает сообщения пользователю.

Как это происходит

Но с недавних времен мы работаем еще и с DPD. Объясняем работу сервисов на примере службы доставки Boxberry.

Получение

Об этом мы должны сообщить пользователю в мессенджере. Сделка близится к завершению — заказ находится в пути, либо уже доставлен покупателю.

Сервисы, участвующие на последнем этапе

Delivery-History-Converter. Получает и хранит статусы по версии службы доставки: «в пути», «готов к выдаче», «возвращен».
Order-Keeper. Хранит информацию, получаемую от службы доставки, о габаритах, весе товара и терминале получения.
Status-Manager. Обновляет последний пришедший статус и отправляет запрос в Order-Expiration.
Order-Expiration. Следит за сроками отправки товара продавцом.
Callback-Processor. Оповещает Avito-Site.
Avito-Site. Передает информацию в мессенджер.

Схема работы сервисов

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

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

Указать их корректно — не проблема для профессионала. Обычно стоимость доставки профессиональной службой зависит от габаритов и веса товара. Из-за этого пользоваться службами доставки не хочется. Но частный продавец может ошибиться в параметрах длины, ширины или веса, и тогда ему выставят дополнительный счёт.

Мы не хотели, чтобы каждый из них оставался недоволен нашим продуктом только из-за того, что не смог точно указать размеры своего товара. У нас в сервисе большие объемы — ежедневно продавцы размещают более 400 000 объявлений. Поэтому мы сопоставили наше дерево категорий с габаритами и тарифами Boxberry и DPD и преобразовали их в условные габариты. Никто бы не стал подключаться к доставке, а покупателям было бы неудобно пользоваться Авито. Неважно, продаете ли вы iPad mini или iPad Pro — платить дополнительную комиссию за ошибку в габаритах не надо. Для тарифов, которыми мы пользуемся в доставке, у товаров одной категории размеры и вес всегда «одинаковые». Хотя есть сервисы, которые требуют заплатить комиссию, если продавец неверно указал размеры и вес товара.

Упаковка

У него есть для этого возможности. В классической доставке продавец всегда сам упаковывает товар. Мы договорились со службой доставки, что эту задачу они берут на себя, и поэтому продавцы не тратят время на лишнее действие. Но если вы, к примеру, просто продаете старый телевизор, то можете столкнуться с проблемой: служба доставки не примет товар без упаковки, а у вас вряд ли хранится фабричная коробка от него, и едва ли есть склад упаковочной бумаги за углом.

Легкий процесс отправления и получения товара

Для того, чтобы сдать и получить заказ, нужно назвать этот номер. У каждого заказа есть свой уникальный номер, который знают только продавец и получатель. Во многих службах доставки без этого действия вы ничего не отправите и не получите. Больше ничего делать не надо — например, заполнять накладные.

Безопасность и контроль сделки

Если покупателю не понравился товар — он может от него отказаться, а деньги ему вернутся. Преимущество доставки на Авито еще и в том, что это не просто пересылка товаров от продавца к покупателю, но и управление деньгами. Мы не только помогаем физически доставить товары, но и участвуем в сделке, защищая продавцов и покупателей. И не надо платить за обратную доставку товара, как бывает в других сервисах. Если возникнут проблемы, мы решим их.

Нельзя дважды купить один товар

Когда покупатель принимает посылку, мы его автоматически закрываем. Если товар оплачен, то мы его резервируем и временно скрываем из выдачи. Но если у продавца несколько экземпляров одного товара, он это тоже может указать. Это помогает нам избегать путаницы с двойной оплатой одного товара. Тогда мы просто изменим их количество в выдаче.

Спустя три месяца работы мы подвели промежуточные итоги. Мы запустили удобный сервис для частных продавцов и покупателей, который предоставляет им новые возможности и помогает лучше достигать своих целей.

Больше всего их, конечно, в Москве — число объявлений перевалило за миллион, и в Питере — больше 500 тысяч объявлений. Сейчас c доставкой можно купить 5 миллионов товаров — это 36% всех объявлений о продаже. С начала апреля пользователи отправили по всей России почти 67 тысяч товаров. Эти же города и самые «отправляющие». Рекорд одного дня — 2 115 отправлений.

Следующие по популярности три маршрута доставки проходят по двум крупнейшим городам: Москва — Санкт-Петербург (1,6%); Санкт-Петербург — Санкт-Петербург (1,5%); Санкт-Петербург — Москва (1,1%). Чаще всего пользователи делали внутригородские отправления по Москве — на этот маршрут пришлось 5% всех посылок. С доставкой на Авито можно отправить товар в любой регион России. Далее — отправления из Москвы в Ростов-на-Дону, Нижний Новгород, Краснодар, Екатеринбург, Новосибирск и Воронеж. Самым длинным маршрутом стал путь Москва — Южно-Сахалинск: детский стульчик для кормления из столицы пролетел более 6,6 тысяч километров.

Если вам будет интересна эта тема, в следующих постах мы расскажем чуть больше про технологию нашего сервиса: с кодом и другими внутренностями. Это первый пост в серии про доставку на Авито. Задавайте свои вопросы в комментариях, постараемся ответить.

Stay tuned!

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть