Найти в Дзене

Как Avito обрабатывает миллионы объявлений о котятах, айфонах и диванах

Каждый день на Avito публикуют сотни тысяч новых объявлений. Кто-то продаёт старый велосипед, кто-то ищет квартиру, а кто-то пристраивает котят. Чтобы всё это работало — чтобы нужное объявление находило нужного покупателя — компания перемалывает гигантские объёмы данных. Представьте: человек заходит на Avito, ищет «iPhone 13», листает объявления, открывает три из них, одному продавцу пишет в чат, потом уходит. За эти две минуты система записала десятки событий: что искал, что листал, куда кликнул, сколько времени смотрел каждое объявление. Умножьте на миллионы пользователей в день. Данные текут из самых разных мест. Основная информация — объявления, пользователи, сделки — живёт в нескольких базах данных. PostgreSQL хранит структурированные данные вроде профилей. MongoDB — более гибкие штуки, где структура может меняться. Cassandra справляется с потоком событий, который не останавливается ни на секунду. Отдельно подтягиваются данные из Jira (задачи команд) и GitHub (что разработчики пиш
Оглавление

Каждый день на Avito публикуют сотни тысяч новых объявлений. Кто-то продаёт старый велосипед, кто-то ищет квартиру, а кто-то пристраивает котят. Чтобы всё это работало — чтобы нужное объявление находило нужного покупателя — компания перемалывает гигантские объёмы данных.

🗄 Откуда берутся данные

Представьте: человек заходит на Avito, ищет «iPhone 13», листает объявления, открывает три из них, одному продавцу пишет в чат, потом уходит. За эти две минуты система записала десятки событий: что искал, что листал, куда кликнул, сколько времени смотрел каждое объявление.

Умножьте на миллионы пользователей в день.

Данные текут из самых разных мест. Основная информация — объявления, пользователи, сделки — живёт в нескольких базах данных. PostgreSQL хранит структурированные данные вроде профилей. MongoDB — более гибкие штуки, где структура может меняться. Cassandra справляется с потоком событий, который не останавливается ни на секунду. Отдельно подтягиваются данные из Jira (задачи команд) и GitHub (что разработчики пишут в код).

⚙️ Как данные попадают в систему

Всё это нужно собрать в одном месте. Тут работает Apache Kafka — думайте о ней как о гигантской трубе, в которую со всех сторон вливаются данные. Труба не теряет ни капли и доставляет всё куда нужно.

Дальше — обработка на Python с библиотекой Pandas. Это как кухонный комбайн для данных: почистить, нарезать, смешать в нужных пространствах. Сырые логи превращаются в понятные таблицы: «пользователь X посмотрел Y объявлений в категории Z и написал двум продавцам».

🏗 Где всё это хранится

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

Поэтому Avito использует ClickHouse — хранилище, заточенное под аналитику. Оно хранит данные не строками, а колонками. Звучит как мелочь, но это позволяет считать агрегаты по миллионам записей за секунды вместо минут.

Часть данных при этом остаётся в PostgreSQL — для задач, где нужна не скорость подсчёта, а надёжность и целостность.

📊 Как команды видят данные

Каждое утро продакт-менеджер категории «Авто» открывает Grafana и видит: сколько машин выставили вчера, сколько продали, какой средний срок продажи. Упал показатель? Значит, что-то пошло не так — либо с продуктом, либо на рынке.

Kibana помогает копать глубже. Если пользователи вдруг начали массово жаловаться, можно быстро найти паттерн: может, сломался поиск в конкретном городе или не грузятся фото на определённых телефонах.

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

💡 Что интересного

Avito использует сразу несколько баз данных для сырых данных — это не хаос, а осознанный выбор. Каждая база хороша в своём: одна держит нагрузку, другая гибко хранит разные структуры, третья быстро ищет.

ClickHouse — российская разработка, которую теперь используют по всему миру. Avito делает на неё ставку для аналитики, и это позволяет строить отчёты по всей истории без боли.

Связка Grafana + Kibana — это как два разных взгляда на данные. Первая для метрик и трендов («что происходит»), вторая для логов и расследований («почему сломалось»).

---

Хотите построить похожую систему для своего продукта — чтобы данные не лежали мёртвым грузом, а реально помогали принимать решения? Напишите, разберём вашу ситуацию!