Кейс Machinio: как разработать свою поисковую систему

6 декабря 2020, 10:00
0

Кейс Machinio: как разработать свою поисковую систему

Агрегатор Machinio автоматически собирает в одном месте информацию о продаже спецтехники. Команда Evrone участвовала в разработке поискового движка, который ежедневно парсит более 20 000 сайтов.
Кейс Machinio: как разработать свою поисковую систему

В 2012 году Дэн Пинто столкнулся с нестандартной проблемой: ему необходимо было купить печатный станок. Подобную технику не приобрести на Ebay — чтобы найти станок по оптимальной цене, пришлось бы пройтись по сотне специализированных сайтов. Тогда Дэн придумал решение — технологию, которая бы проанализировала нужные данные и спарсила всё в единую базу. Так зародилась идея стартапа по продаже сложной техники - Machinio

От задумки к работающему продукту

Вместе с давним другом Дмитрием Рохфельдом Дэн запустил стартап Machinio, который систематизирует информацию из нескольких источников и помогает находить подходящего продавца оборудования из тысячи предложений. На платформе предусмотрен канал для связи продавцов и покупателей, чтобы обсудить детали и уточнить характеристики. 

Первую версию продукта написал сам Дэн. С ростом сервиса и увеличением количества контактов с продавцами Дэн понял, что сложно совмещать две роли — руководить компанией и поддерживать код в рабочем состоянии. В этот период команда обратилась к Evrone, чтобы усилить инхаус-команду разработчиков и расширить возможности сервиса. Мы занималась серверной частью, ядром Machinio. 

Как устроен сбор данных?

База Machinio формируется автоматически. Веб-краулеры проходят сайты продавцов и листинги, чтобы собрать нужные данные. Продавец только подписывает договор с платформой и оплачивает подписку.

Корпоративный краулер имеет некоторые ограничения, как дополнительный инструмент используется Ferrum. Это open-source веб-драйвер, созданный при участии Evrone. С его помощью удаётся собрать данные с сайтов на React или Vue.

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

Сбор и обработка данных проходит в два этапа:

  • Краулер сохраняет данные в представленном на сайте виде. 

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

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

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

Чтобы обрабатывать такое количество информации, Machinio использует 10-12 серверов на постоянной основе, в случае высокой загрузки подключает резервные машины в полуавтоматическом режиме. Система построена на микросервисной архитектуре и написана на Ruby on Rails. 

Будущее Machinio

В результате совместной работы получился многофункциональный сервис, команда достигла хороших показателей и привлекла более 4 миллионов долларов инвестиций. В 2018 году Дэн и Дмитрий решили продать Machinio крупной американской сети Liquidity Services. 

Сервис продолжает активно расти. В начале 2020 года платформу ежемесячно посещали около 670 000 пользователей. А написанный нами код и по сей день используется в Machinio. 

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

Ответить?
Введите капчу