Найти того самого не так-то просто
Если рекомендаций недостаточно, то можно обратиться к внутреннему поиску Авито.
Над функциональностью поиска сообща работают кластеры Search&Recommendations и Buyer Experience.
Пристрой
кота
Проследи путь объявления и узнай, как устроена работа Авито
Авито — это 150 000 000 актуальных объявлений: животные, квартиры, машины, резюме, техника и тысячи других вещей.
Но это не просто доска объявлений — за ней стоит работа большой команды.
Подать объявление на Авито проще простого, пара кликов — и готово!
Но за простыми кликами скрывается куча процессов и людей. Сейчас ты всё узнаешь.
Отдам кота
Добавить в избранное
Интересуется технологиями, любит жать на кнопки.
Как продать что-нибудь ненужное?
Hужно купить что-нибудь ненужное, нужны отлаженные процессы и функциональность. Поэтому в Авито всё построено на взаимодействии горизонталей и вертикалей.
Вертикали пилят уникальные фичи с тонкими настройками под определённые категории и особенности объявлений.
Горизонтали создают инструменты, модели и функциональность, которые используются во всех объявлениях.
Работая сообща, они пилят идеальные фичи. Например, кластер из горизонтали сделал фильтры для поиска, а вертикали добавили спецификацию.
Идеальные фильтры
Путь объявления начинается с Tech Platform — глобальной технической базы, которая обеспечивает работу всей экосистемы Авито.
1. Tech Platform
Включаем сотни микросервисов
Когда человек создаёт объявление на мобильном устройстве, оно попадает в кластер Mobile.
Кластер Mobile
Гарантируем производительность мобильной разработки
Кластер Mobile фокусируется на мобильной платформе Авито: команды разрабатывают и продвигают общие архитектурные подходы, стандарты качества кода и поддержку платформенных библиотек.
Кластер предоставляет продуктовым командам инструменты для разработки, развивает CI/CD и улучшает Developer Experience.
Каждое изменение в коде запускает десятки тысяч тестов. Команды распределяют эту нагрузку между сотней билд-серверов и пишут софт для оптимизации этих процессов.
Где рекомендательное письмо?
Скоро меня будет легко найти в поиске или через рекомендации. Но прежде чем объявление попадёт туда, оно пройдёт через балансировщики, сеть, инфраструктуру и сервисы архитектуры.
Кластер Infrastructure
Строим надёжную инфраструктуру
Кластер Infrastructure развивает железную, сетевую, виртуальную и облачную инфраструктуру из тысяч серверов, сотен терабайт и тысячи инстансов БД, в которой хранятся все данные Авито: от уровня Bare Metal до уровня сервисов.
Задачи разнятся от деплоя новых инстансов и мониторинга до проектирования геораспределённых гибридных сетапов и разработки автоматизированных систем управления, aka IaaS.
Уверен, в таких делах не обойтись без планирования...
Наш план развития гибкий, хоть и продуман на годы вперёд. Мир вокруг нас меняется каждый день — а мы делаем так, что наши сервисы всегда доступны и стабильны.
А что с оптимизацией?
Исследуем всё, что может оптимизировать и упростить работу. Например, изучаем новые версии баз данных или придумываем, как автоматизировать инфраструктуру.
А вы разбираетесь в архитектуре?
Работа объявления (и моя судьба) зависят от разных сервисов. Какой из них нужен — определяет обращение к архитектуре. В подаче объявления это, например, сервисы кластера Seller X.
Кластер Architecture
Обеспечиваем стабильность и масштабируемость
Кластер Architecture развивает высокоуровневую архитектуру, чтобы с ростом компании не замедлялась скорость доставки продуктовых фич и их техническое качество.
Мы избавляем разработчиков от рутины и снижаем когнитивную нагрузку с помощью PaaS, формируем архитектурные принципы, разрабатываем сервисы для хранения данных. Словом, создаем архитектуру всего Авито.
Dev tools
Runtime tools
Cloud, Provisioning, Runtime
У нас 2000+ микросервисов, несколько дата-центров, больше 10 000 000 запросов в минуту — здесь важна стабильность, масштабируемость и в то же время простота и удобство для использования на множестве платформ.
»Именно здесь инициировали и распилили монолит! РАСПИЛИЛИ МОНОЛИТ! со стороны бэка и не дали ему заглохнуть:
2019 год: все 1,7 млн запросов в минуту идут на монолит
2023 год: 10 млн запросов в минуту распределяются по микросервисам
МОНОЛИТ
Кластер Seller Experience
Делаем жизнь продавцов проще
Кластер Seller Experience делает удобную, быструю, надёжную подачу и управление объявлениями через личный кабинет. Это горизонтальная команда, поэтому работает сразу со всеми вертикалями и учитывает интересы пользователей каждой. В таких задачах нужны сложные технически, но простые с точки зрения пользователя решения.
Это магия какая-тоКаждый день на Авито можно найти 150+ млн активных объявлений — именно ребята из Seller X делают это возможным.
150 000 000активных
объявлений
Кластер Information Security
Поддерживаем стабильную работу
Авито
Кластер Information Security занимается безопасностью Авито.
Мы разрабатываем сканеры, которые автоматически находят уязвимости в коде до того, как они попадут в продакшн.
Наши системы защиты отражают атаки из интернета, борются с парсерами и другими ботами, которые пытаются собирать данные пользователей.
Кластер Information Security
Поддерживаем стабильную работу
Авито
Кластер Information Security занимается безопасностью Авито.
Мы разрабатываем сканеры, которые автоматически находят уязвимости в коде до того, как они попадут в продакшн.
Наши системы защиты отражают до 3 млн. атак из интернета в месяц и блокируют парсеров и других ботов, которые пытаются собирать данные пользователей.
Кластер DS SWAT
Обрабатываем и извлекаем информацию из картинок
Кластер DS SWAT анализирует картинки на соответствие правилам. А ещё именно благодаря этому кластеру Авито предсказывает категории в момент подачи объявления: по картинке и описанию объявления.
Отдам кота
Добавить в избранное
Интересуется технологиями, любит жать на кнопки.
Продам кота
Добавить в избранное
Интересуется технологиями, любит жать на кнопки.
Ура, фото добавлено! Продолжаем путешествие по Tech Platform!
Кластер Analytics Platform
Анализируем
события
Кластер Analytics Platform разрабатывает платформу, с помощью которой аналитики, инженеры и менеджеры продукта смогут решать аналитические задачи быстро и самостоятельно.
Кластер Analytics Platform
Анализируем
события
Кластер Analytics Platform создает бигдата-фреймворки для
оптимизации продуктов Авито и разрабатывает платформу, с помощью которой аналитики, инженеры и менеджеры продукта могут решать аналитические задачи быстро и самостоятельно. В результате продуктовая культура команды улучшается, а рутинные задачи аналитиков сводятся к нулю.
Что позволяет делать аналитическая платформа
Кластер Trust&Safety
Поддерживаем безопасность
Кластер Trust&Safety делает сервисы Авито надёжными и безопасными. Вход в профиль, распознавание хорошего пользователя от недобросовестного или робота, сбор мнения об объявлении, получение 5 звёзд за продажу — это часть того, что делают ребята из кластера T&S.
Moderation
Техплатформа отработала на отлично.
Объявление летит дальше, на очереди — модерация.
2. Модерация
Модерация запущена
Кластер Moderation
Проверяем объявление
Кластер Moderation автоматически блокирует 95% неразрешённого контента до публикации. Остальные 5%, которые попробовали обхитрить систему, быстро обнаруживаются командой и блокируются.
Здесь создают технически сложные продукты, балансируя между простотой использования и безопасностью.
Мы защищаем площадку и добросовестных юзеров, а ещё создаём инструменты автоматизации для модераторов. Например, через сложные ML-алгоритмы система ищет дубли среди 150 000 000 объявлений.
Мы отслеживаем изменения законодательной и технической сферы, чтобы при необходимости корректировать код.
Ещё вчера самогонные аппараты было нельзя продавать, а сегодня уже можно (вот сюрприз!), и наоборот — продажа сертификатов вакцинации появилась неожиданно, и реагировать на это нужно сразу же.
Благодаря развитой аналитике и постоянному анализу платформы и пользовательского опыта, большинство объявлений проходят модерацию с первого раза!
3. Публикация
Я — сантехник!
Отдам Кота
Отдам картину
с котиками
Новая собака
Продам утюг
Клетка
для котиков
Набираю популярность!
После модерации объявление обо мне попадает в базу данных и индексируется поисковиками. Для оценки популярности начинают логироваться аналитические события. Несколько ML-моделей обрабатывают публикацию, чтобы она попала в разные каналы рекомендаций для пользователей.
Вы видели, какой потрясающий кот? Я знаю, кто должен его увидеть!
Набираю популярность!
После модерации объявление обо мне попадает в базу данных и индексируется поисковиками. Для оценки популярности начинают логироваться аналитические события. Несколько ML-моделей обрабатывают публикацию, чтобы она попала в разные каналы рекомендаций для пользователей.
Кластер Search&Recommendations
Настраиваем алгоритмы рекомендаций
Кластер Search&Recommendations обеспечивает работоспособность и гибкость инфраструктуры поиска, чтобы команды безопасно шипили продуктовые изменения. Но главное, мы делаем так, чтобы покупатели встретились с продавцами.
В основе сайта лежит свой собственный поисковый движок на C++, который оперирует сотнями миллионов документов на кластерах машин.
Сейчас лента персональных рекомендаций — это смешение нескольких моделей, одна из которых берёт объявления, похожие на те, что пользователь смотрел, и ранжирует их.
Как работает система похожих объявлений?
Кот, которого мы хотим отдать в хорошие руки, похож на кота из соседнего объявления.
Кот, которого мы хотим отдать в хорошие руки, похож на кота из соседнего объявления. У них одинаковая локация, близкая стоимость и порода.
У них одинаковая локация, близкая стоимость и порода.
Чтобы понять, какие объявления похожи, на помощь приходят данные — параметры, которые совпадают у объявлений, которые пользователи Авито смотрят вместе.
На основе этих данных, наши умные модели определяют, какие параметры важнее, и находят «похожие» объявления.
Объявления, которые пользователи смотрят вместе, Авито считает похожими. Это технология item2item — она не зависит от того, что юзер делал на сайте. Похожие объявления одинаковы для всех.
Объявления, которые пользователи смотрят вместе, Авито считает похожими. Это технология item2item — она не зависит от того, что юзер делал на сайте. Похожие объявления одинаковы для всех.
Поверх этого алгоритма работают умные подсказки, которые учитывают множество языковых моделей. Например, они различают 64 варианта слова «комбинезон». Или поймут, что человек ищет «ксерокс», как бы он его ни написал.
Кластер Search&Recommendations
Фундамент поиска
Кластер Search& Recommendations делает фундамент поиска. Разработка движка на C++ в целом, расчёт сигналов ранжирования в частности, доставка кучи данных, оперирование нескольких кластеров (и основной поиск сайта, и ещё несколько больших и важных) — это всё мы.
Кластер Buyer Experience
Улучшаем опыт покупателей
Кластер Buyer Experience улучшает опыт покупателей в целом.
Задача кластера — улучшить жизнь покупателей на всём пути до совершения сделки. Мы добиваемся этого за счёт улучшения интерфейсов, создания новых механик поиска, потребления контента и совершения сделок.
Здесь делают все карты — это одна из самых востребованных функций для поиска. А ещё отдельные команды помогают объявлениям индексироваться в поисковиках, чтобы их можно было найти не только внутри Авито.
Мы активно адаптируем новые технологии. Например, сейчас в сервисе избранных объявлений мы перешли на CockroachDB, облачную базу данных с поддержкой ACID. А в будущем планируем перенести туда весь функционал по отложенному спросу: подборки, сохраненные поиски, всё то, что можно полайкать.
Кластер Communications
Развиваем платформу коммуникации
Кластер Communications развивает самописную платформу звонков и мессенджер.
Мессенджер — самый популярный способ коммуникации на площадке, через него проходят миллиарды сообщений. Можно сказать, вечный хайлоад. Пользователи общаются онлайн напрямую, поэтому здесь особенно важно, чтобы чаты оставались консистентны, а система работала быстро.
Когда кота увидит Тот Самый Человек, то сразу же сможет написать или позвонить через внутренние сервисы Авито, а мы подменим его номер телефона, чтобы его не узнали злоумышленники.
Чтобы всё корректно работало, кластер Quality следит за качеством всех разработок в Авито.
Кластер Quality
Помогаем
программистам
Кластер Quality предоставляет инструменты, методологии и компетенции, которые обеспечивают качество продукта. Например, чтобы тесты не приходилось сначала писать, а потом автоматизировать в коде, мы сделали возможность хранения и выгрузки тестов в тестовую модель сразу из кода. На всех поддерживаемых языках программирования в компании!
Здесь мы разработали систему мониторинга, которая среди тысячи метрик автоматом вычисляет сломанную, а затем находит среди 5 500 сотрудников Авито того, кто может
это исправить.
Кластер Marketplace
Приближаем пользовательский опыт к покупкам в интернет-магазинах
В Кластере Marketplace мы хотим, чтобы для большинства пользователей Авито основным способом покупок и продаж товаров стала Авито Доставка.
Большая часть наших пользователей привыкли покупать и продавать, встречаясь лично в метро. Мы изобретаем способы помочь людям переосмыслить эту привычку и, в итоге, доверить свой товар Авито Доставке, сэкономив своё время.
Я в корзину не полезу!
На этом этапе продавец может указать, сколько вещей у него в наличии, а покупатель — выбрать в корзине несколько товаров от разных продавцов и оплатить их одной транзакцией. Но котика в корзину не добавишь — только из рук в руки. К тому же меня отдают бесплатно.
Я в корзину не полезу!
На этом этапе продавец может указать, сколько вещей у него в наличии, а покупатель — выбрать в корзине несколько товаров от разных продавцов и оплатить их одной транзакцией. Но котика в корзину не добавишь — только из рук в руки. К тому же меня отдают бесплатно.
Кластер Logistics
Делаем логистику как платформу
Кластер Logistics отвечает за Авито Доставку и решает множество задач: от работы со службами доставки до обработки претензий и арбитражных кейсов.
А как службы доставки интегрируются в Авито?
Мы прошли долгий путь от кастомных интеграций до единого общего API на нашей стороне, который позиционируем как оптимальный способ IT-взаимодействия с логистикой Авито. Новым партнёрам предоставляем необходимую документацию и отдельно договариваемся о технических SLA.
Для выбора удобной службы доставки продавцу и покупателю нужно договариваться?
Нет. Сейчас доступна кросс-доставка: продавец выбирает удобный способ отправки при публикации объявления, а покупатель выбирает тот, что больше подходит ему.
Мы планомерно делаем выбор службы доставки более удобным: расширяем список доступных опций, дорабатываем карту выбора пунктов выдачи.
Как в целом следите, чтобы всё хорошо работало?
Мы научились предупреждать пользователей о сбоях, чтобы спасти нервы клиентов и сэкономить время поддержки. Следим за uptime метриками ключевых сценариев, бизнес-показателями и ставим перед собой амбициозные цели по SLA внутренних сервисов. Ещё договариваемся об уровне качества интеграций со службами доставки.
Ну и, разумеется, под каждый сервис и продукт собираем дашборды для постоянного мониторинга. «Хорошо» для логистики — это заказы, доставленные вовремя по минимальной цене и с прозрачными коммуникациями для покупателя и продавца.
Коты против пластика! Готовьте нал.
Меня отдают в добрые руки бесплатно. Но вообще таких, как я, можно оплатить только наличкой. А вот игрушки и лежанку можно заранее оплатить онлайн и получить курьерской доставкой.
Коты против пластика! Готовьте нал.
Меня отдают в добрые руки бесплатно. Но вообще таких, как я, можно оплатить только наличкой. А вот игрушки и лежанку можно заранее оплатить онлайн и получить курьерской доставкой.
Кластер Financial Marketplace
Выстраиваем систему транзакций
В Кластере Financial marketplace
мы занимаемся двумя важными вещами: помогаем людям платить и помогаем не платить сразу — занимаемся кредитными продуктами.
Особое внимание уделяют бесшовности взаимодействия в работе с платежами и для пользователей, и для внутренних команд.
Объявление проходит заключительный шаг пользовательского сценария.
И для кота, и для пользователя он безопасный и быстрый.
Ищем подход ко всем продавцам
Платформизация — наше всё, ведь это помогает другим командам адаптировать наш продукт под нужды конкретного сегмента пользователей.
Мы ищем подход ко всем продавцам (и бизнесу, и частным лицам) и стараемся сделать их жизнь на Авито проще и прибыльнее.Для крупных бизнесов мы развиваем функциональность кабинета для профессионалов, Автозагрузку, Иерархию аккаунтов и платформу открытого API для лёгкой интеграции с системами продавцов
А ещё мы делаем продукты, связанные с аналитикой и статистикой. Собираем и обрабатываем события по всем платформам Авито — каждую минуту внутренняя система Bivrost агрегирует по 3 млн событий и быстро отдаёт пользователям точную статистику.
Для крупных бизнесов мы развиваем:
функциональность
кабинета для профессионалов
иерархию аккаунтов
автозагрузку
платформу открытого API
Обрабатываем до 1,7 млн событий в секунду
Мы разработали свою собственную систему сбора событий с Linux-серверов, чтобы внимательно следить за любыми попытками атак.
150 человек из всей команды AvitoTech — это security-чемпионы, 30 человек — это ядро безопасности, они проводят аудиты, проверяют дизайн решений и ведут расследования. В год на обеспечение безопасности мы тратим около 2-3 млрд рублей.
А ещё мы безопасно храним используемые в продакшне ключи и пароли и защищаем учётки наших сотрудников!
Формируем залипательную ленту с рекомендациями
Бесконечная лента формируется алгоритмами машинного обучения в реальном времени на основании миллиардов кликов всех пользователей Авито каждый день.
Двухуровневая архитектура модели рекомендаций в реальном времени кормится данными пользователей и содержит 5 разных классов моделей на первом уровне и верховный ранкер на втором.
Ищем похожие объявления, используя поисковый движок
Самой тяжёлой операцией в работе с уже существующей базой векторов является поиск top-n ближайших.
Мы для этого используем поисковой движок Sphinx. Он позволяет нам эффективно перемножать векторы и искать похожие полным перебором с фильтром на категорию, регион и некоторые параметры, а в самых крупных категориях мы можем перемножать несколько миллионов векторов на один запрос.
Время ответа сервиса:
200ms (p99) при нагрузке 200K rpm