Кейс 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, масштабировании проекта, развитии функционала. Мы подключаемся к инхаус-команде, чтобы привнести свою экспертизу и опыт, или же полностью отвечаем за разработку продукта.