Плагины в o2-midway. Создание гибкого пайплайна обработки фичей в поисковом движке

Базы данных и системы хранения

API
Java
Поисковые системы
Асинхронное программирование, реактивное программирование
Оптимизация производительности
Профилирование
Рефакторинг
Разработка библиотек, включая open source библиотеки
Архитектура данных, потоки данных, версионирование
Поддерживаемый код
Слабо связанная архитектура
Время разработки и поставки задач
Доверие команды внутри и снаружи
Оптимизация
Хранилища
Обработка данных
Расширение кругозора

Программный комитет ещё не принял решения по этому докладу

Целевая аудитория

Разработчики сложных систем с логикой от разработчиков других команд Разработчики поисковых систем Java-разработчики Любопытные ребята

Тезисы

Современные поисковые системы требуют от разработчиков успевать поддерживать как базовую функциональности и производительность, так и постоянно изменяющуюся и развивающуюся функциональность более "умных" фичей внутри. Зачастую, такие фичи создают соседние команды ad-hoc, и с развитием кодовой базы добавление каждой из них превращается в отдельную боль для всех, в особенности с точки зрения оптимизаций и поддержки кода.

Мы расскажем, как последняя такая капля убедила нас разработать универсальный механизм плагинов, позволяющий решить эту проблему. В сервисе o2-midway — среднем слое поисковго движка Ozon — мы смогли перейти от ручного встраивания "куда удобно" фичей другими разработчиками к унифицированному механизму дополнений, полезному не только для развития кодовой базы, но и для автоматического выполнения оптимизаций, тяжелоосуществимых в ручном режиме.

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

Старший разработчик поисковой платформы Ozon, занимается созданием новых технических фич в движке, тулингом для коллег по команде. Состоит в Java-комитете компании. Автор анализатора поискового индекса, продвинутого парсера запросов, быстрого хранилища полей в поисковом индексе.

Основные языки: Java, Rust.

Фанат опенсорса, контрибьютил в ряд проектов, включая Lucene и OpenJDK. Топит за строгую типизацию и максимальную статическую верифицируемость кода.

В свободное время занимается проектами, среди которых биндинги для Flipper Zero и альтернативная модульная реализация игрового сервера.

Ранее работал в геймдеве, занимался созданием игровых серверов и инфраструктуры вокруг них.

Видео

Другие доклады секции

Базы данных и системы хранения