Как разработать поисковую систему IT специалистов в большой базе данных с сайтов-партнеров заказчика

Заказчик
Right People Group помогает компаниям нанимать технических консультантов и разработчиков для работы в офисе. В базе данных клиента хранятся резюме 20 000 IT-специалистов из 11 европейских стран.
Задача
Создать VMS, которая позволит быстро находить нужных компании IT специалитов в базе данных из десятков тысяч сайтов-партнеров Right People Group, с учетом местоположения самой компании

RIGHTPEOPLEGROUP.COM

Right People Group помогает компаниям нанимать технических консультантов и разработчиков, которые готовы работать в офисе. В базе данных клиента хранятся резюме 20 000 IT-специалистов из 11 европейских стран.

ЗАДАЧА

Крупные корпорации нанимают большое число специалистов на проектную работу по контракту. При этом менеджерам по персоналу важно иметь возможность управлять наймом таких специалистов: подбирать и приглашать на работу новых сотрудников, заключать с ними договоры, хранить отчеты и платежные документы. Это удобно делать с помощью специализированной системы управления поставщиками (Vendor management system или VMS).

В 2019 году Right People Group начала расширять бизнес, в том числе продвигать услугу онлайн-подбора специалистов в офис. Для удобства корпоративных клиентов было решено создать собственную VMS, которая сделает процесс поиска по базе резюме проще и удобнее.

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

За разработкой Onsiter VMS Right People Group обратились в Resolventa.

РЕШЕНИЕ

Информация о специалистах и их компетенциях хранится на десятках тысяч сайтов-партнеров Right People Group. Для поиска конкретного специалиста по заданным критериям отбора, клиенту нужна была поисковая система. Эксперты Resolventa начали работу с поиска готовых решений, однако оказалось, что они не подходят для задач клиента: проиндексировать нужно было больше 10 000 сайтов. Существующие системы либо не позволяли загрузить такой большой список, либо оказывались слишком дорогими.

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

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

Проанализировав все требования, Resolventa разработала архитектуру модуля, который ищет данные на сайтах-партнерах:

Центром VMS стали поисковые «пауки» (Spider pod), число которых регулируется в зависимости от количества сайтов и необходимой скорости индексации. В системе могут работать десятки «пауков», но несколько «пауков» никогда не подключаются одномоментно к разным страницам одного сайта, чтобы избежать бана или ненамеренной перегрузки сканируемого сайта. Индексация одной страницы в среднем занимает около 5 секунд.

Список сайтов, которые нужно индексировать, загружают сотрудники Right People Group через специальный интерфейс. Если у компании появятся новые партнеры, ссылки на их сайты можно будет загрузить таким же образом. На основе списка формируется база данных, где хранятся URL сайтов, физические адреса компаний-партнеров и контактная информация.

Каждую минуту начинается новый цикл работы поискового «паука»: генератор задач на сканирование(Website Spider Scanning Producer) выбирает из базы страницы, которые нужно проиндексировать, и отправляет ссылки на них в очередь сообщений Rabbitmq. «Паук» забирает ссылку из очереди и отправляет в Chromium, чтобы выполнить код Java Script. Это нужно, чтобы прогрузить все данные, которые есть на странице и получить наиболее полную информацию о ее содержимом.

Поисковые «пауки» сохраняют данные в три источника:

В ElasticSearch загружается текстовые данные со страницы, а также информация, которая необходима для ранжирования. Например, заголовки страниц, ключевые слова, выделенные предложения. Эта информация позволяет выполнять точный и релевантный поиск по сайтам-партнерам. Например, находить подходящих сотрудников по компетенциям или специализации. Также можно указать локацию — адрес офиса и радиус поиска до 250 км.

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

В облачное хранилище (Cloud Storage) сохраняется копия загруженной страницы.

Поиск кандидатов в базе важная, но не единственная возможность VMS. После того, как пользователь выбрал нужных кандидатов, он может автоматически сформировать и отправить письмо с приглашением к сотрудничеству.

Кроме того, Onsiter VMS интегрирована с Onsiter Marketplace. Пользователь получает доступ ко всем возможностям маркетплейса из интерфейса VMS и может заключать контракты с работниками, обмениваться договорами и отчетностью, хранить платежную информацию.

РЕЗУЛЬТАТ

Resolventa развивает и поддерживает Onsiter VMS в течение 4 лет. За это время архитектура поисковой системы подтвердила свою надежность и устойчивость: она работает стабильно, без сбоев и внешнего вмешательства. Сейчас поиск доступен на 7 языках для 11 стран Европы.

Модули системы можно масштабировать с помощью контейнеров Kubernetes. То есть, при увеличении числа сайтов-партнеров или другом росте системы, в ней будет легко добавить больше «пауков», генераторов задач на сканирование, парсеров Chromium или очередей. Это дает возможность индексировать практически неограниченное количество сайтов.

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

Andreas Pettersson, CTO. Right People Group. Onsiter:

Команда Resolventa - трудолюбивые и очень опытные сотрудники. Скорее всего, одни из лучших, которых вы сможете найти. Если вам нужны коммуникабельные фулстек-разработчики, разбирающиеся в РНР, не ищите дальше: Resolventa - это ваш выбор.

ТЕХНОЛОГИИ

PHP, Symfony, MySQL, ElasticSearch, Vue.js, GCP, Kubernetes, Docker, CircleCi, PHPUnit

ИНТЕГРАЦИИ

Mailtrap, Fixer.io, Sentry


Перейти на сайт

В карточку агентства

Письмо автору кейса

Пользуйтесь реальным опытом в IT и следите за успехами потенциальных подрядчиков и конкурентов
Подпишитесь на рассылку
Читайте также
Кейсы по теме#Образование, наука, работа
Проекты компании Proactivity Group