Задача
Перед сотрудниками компании СКЭНД стояла задача разработать новую платформу по поиску вакансий на основании существующей системы заказчика. Основные требования для нового сервиса включали улучшение скорости поиска, выдачу более релевантных результатов с учетом регионов и отраслей вакансий, адаптацию под мобильные устройства, а также внедрение современного UI/UX. Обязательным условием являлась синхронизация данных между старой системой и новой платформой на этапе тестирования и ввода последней в эксплуатацию.
В дополнение к существующему функционалу новая платформа должна была обеспечить несколько важных функций:
- поиск по ключевым словам в описаниях вакансий;
- фасетный поиск по атрибутам вакансий (регионы, отрасли, города и т.д.);
- создание RESTful API.
Решение
Архитектура новой платформы базировалась на нескольких сервисах:
- Сервис миграции данных
- Cервис загрузки данных в Solr
- Сервис поиска
- Сервис управления вакансиями
Такой подход, во-первых, позволил сократить время разработки за счет параллельной работы над разными сервисами, а во-вторых, обеспечил легкость и быстроту масштабирования отдельных частей приложения для обработки больших объемов данных.
Для полнотекстового и фасетного поиска мы выбрали Apache Solr, платформу с открытым исходным кодом. К основным возможностям Apache Solr, помимо указанных выше, можно отнести следующие:
- интеграция с базами данных;
- обработка документов со сложным форматом (например, Word или PDF);
- гибкое управление релевантностью;
- кэширование запросов, фильтров и документов;
- веб-интерфейс для администрирования;
- расширяемость за счёт подключаемых модулей.
Миграция данных в новую БД осуществлялась в несколько этапов.
Этап 1.
Так как закрытые и неактуальные вакансии составляли большую часть объема данных, именно они были перенесены в новую базу данных в первую очередь.
Этап 2.
Следующим этапом был перенос активных и новых вакансий.
Этап 3.
Последний этап включал в себя остановку сервиса для окончательной синхронизации данных и последующее переключение сервиса на новую платформу и новую базу данных.
За счет того, что на последнем этапе копировались только те вакансии, которые были добавлены или изменены с момента начала миграции данных, время остановки сервиса было минимизировано.
Внедрение RESTful API позволило унифицировать взаимодействие с внешними приложениями-клиентами, в том числе и с новым UI, а также открыло партнерам платформы широкие возможности для создания сторонних решений.
Для обеспечения отказоустойчивой загрузки данных в Solr, была спроектирована новая база данных MySQL, использующая репликацию типа master-master. Так как данные в существующей системе хранились в базах с разной структурой, новая база данных была разработана с учетом хранения данных для различных регионов в едином формате.
Результат
Отдел веб-разработки СКЭНД разработал платформу, отвечающую современным требованиям как в части UI/UX так и в части архитектуры приложения и скорости его работы.
Сохранив весь существующий функционал, новая платформа позволила значительно ускорить и улучшить результаты поиска, а также посредством использования единого API обеспечила возможность интеграции сторонних приложений, в том числе и мобильных.