Как мы ускорили расчёт факторов ранжирования в поиске Ozon с помощью динамической компиляции

Всем привет! Меня зовут Петя Портнов, я работаю в Ozon ведущим разработчиком в команде среднего поиска — слоя, который ранжирует поисковую выдачу. Представьте, что вы вводите запрос в поисковую строку маркетплейса. За этим простым действием скрывается сложный поисковый пайплайн: миллионы товаров фильтруются, ранжируются и сортируются по релевантности. Но как именно система решает, что показать первым? В основе этого решения лежат вычисления, среди которых — сотни разнообразных формул, учитывающих цену, рейтинг, популярность, персонализацию и другие факторы. По мере развития системы таких формул становится всё больше, а сами они усложняются. В какой-то момент вычисления превращаются в узкое место: начинают потреблять значительную долю CPU, создают множество промежуточных объектов — и так для каждого поискового запроса. Возникает вопрос: как снизить стоимость таких вычислений в JVM? В этой статье я расскажу, что сделали мы, чтобы снизить нагрузку на систему: как заменили интерпретирующий движок формул на динамический компилятор, выполняющий построение эффективного байт-кода, отлично векторизующегося JIT-компилятором. Это текстовая версия доклада с Joker 2025 с дополнениями, которые не вошли в выступление или появились в проекте уже после конференции.

https://habr.com/ru/companies/ozontech/articles/1041218/

#java #поиск #оптимизация_производительности #компиляция #байткод #jvm #ozon_tech

Как мы ускорили расчёт факторов ранжирования в поиске Ozon с помощью динамической компиляции

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

Хабр

Автотестирование пайплайнов в GitLab CI: наш опыт и практика

Когда речь заходит про автотесты, первыми на ум приходят проверки для UI, API или для мобильных устройств. Однако автотесты нужны не только для проверки пользовательских сценариев. Они могут решать и менее очевидные, но не менее важные задачи, например проверять работу пайплайнов. Если одни и те же пайплайны используют сотни сервисов и библиотек, любая ошибка в них быстро выходит за пределы одного проекта. У многих команд одновременно могут сломаться сборки, релизы и привычный процесс разработки. В нашем случае такие пайплайны работали примерно для 700 сервисов и более 200 библиотечных репозиториев. Чтобы гарантировать работоспособность пайплайнов, мы пришли к идее покрытия их автотестами. В статье я расскажу, как мы в Ozon покрывали тестами работу пайплайнов в GitLab CI, какие требования нужно было учесть и как в итоге были устроены end-to-end-тесты для таких сценариев.

https://habr.com/ru/companies/ozontech/articles/1027596/

#тестирование #автоматизация #cicd #gitlab #пайплайны #автотестирование #pipeline #ozon_tech

Автотестирование пайплайнов в GitLab CI: наш опыт и практика

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

Хабр

«Свайп вправо» — построй свою стратегию дизайна

Привет, я Таня — работаю ведущим продуктовым дизайнером опыта покупателя в Ozon. Среди моих продуктов «Избранное», «Вишлисты», мини-апп «Доставки посылок», а в прошлом я дизайнила «Карточку товара». Год назад я ротировалась в команду «Корзины», потому что хотела для себя новых вызовов. На примере редизайна «Корзины», я хочу показать, как сегодня меняется роль дизайнера в продукте, чем дизайн-стратегия отличается от просто красивого концепта, почему такие изменения невозможно делать в одиночку.

https://habr.com/ru/companies/ozontech/articles/1020990/

#продуктовый_дизайн #стратегия_продукта #концепты #дизайнстратегия #ozon_tech

«Свайп вправо» — построй свою стратегию дизайна

Привет, я Таня — работаю ведущим продуктовым дизайнером опыта покупателя в Ozon. Среди моих продуктов «Избранное», «Вишлисты», мини-апп «Доставки посылок», а в прошлом я дизайнила...

Хабр

Тайны рекламного аукциона в Ozon и как мы приручали VCG

Привет! Меня зовут Дмитрий, я ведущий разработчик в команде рекламного рантайма. Наша команда, как вы уже могли догадаться, занимается разработкой аукционов в поисковой рекламе Ozon. В этой статье я хочу познакомить вас с механикой аукционов и рассказать, как мы делаем это в Ozon. Сначала мы разберёмся, что такое рекламный аукцион, что он имеет общего с аукционом в обычном понимании и как используется в контексте поисковой рекламы. А ещё подробно разберём аукцион типа VCG (аукцион Викри — Кларка — Гровса), вместе выведем формулы для него и посмотрим, какие результаты мы получили на практике.

https://habr.com/ru/companies/ozontech/articles/1014218/

#ozon #поисковая_реклама #рекламный_аукцион #ecommerce #ozon_tech #поиск

Тайны рекламного аукциона в Ozon и как мы приручали VCG

Привет! Меня зовут Дмитрий, я ведущий разработчик в команде рекламного рантайма. Наша команда, как вы уже могли догадаться, занимается разработкой аукционов в поисковой рекламе Ozon. В этой статье я...

Хабр

Не самый сильный разработчик в комнате: как из QA я стала тимлидом разработки

Всем привет! Меня зовут Юлия Новикова, и мае 2025 года я стала Team Lead группы фронтенд-разработки в Ozon. В моей команде сейчас 5 разработчиков и 2 тестировщика, и мы создаём фронтенд для админок, которые управляют работой складов, РЦ (распределительный центр) и дарксторов. Но путь мой сюда был не самым тривиальным — до этого я была QA Lead, а не разработчиком. А началось всё с того, что я начала думать: а что дальше? Кем я могу стать, если ещё вырасту? Вакансий руководителей тестирования, а особенно руководителей отделов тестирования, не так много, а хотелось больше влияния, больше развития. И я решила прыгнуть вбок и сменить профессию: стать тимлидом разработки. Расскажу, как это было и чего стоит ожидать тем, кто задумывается о таком же повороте.

https://habr.com/ru/companies/ozontech/articles/1001082/

#frontend #teamlead #qa_lead #soft_skills #управление_командой #ozon_tech

Не самый сильный разработчик в комнате: как из QA я стала тимлидом разработки

Всем привет! Меня зовут Юлия Новикова, и мае 2025 года я стала Team Lead группы фронтенд-разработки в Ozon. В моей команде сейчас 5 разработчиков и 2 тестировщика, и мы создаём фронтенд для...

Хабр

Стоит ли ходить на стажировки QA? Мой опыт в Ozon Tech от отклика и до нашей эры

Привет, Хабр! Я Маша, младший инженер по тестированию в Ozon Tech, а совсем недавно — стажёр. Сейчас я опишу, как здесь оказалась и что будет с вами происходить, если вы начнёте карьерный путь в Ozon Tech (но это не точно, у каждого из нас свой путь и команда!). Во время обучения тестированию мне хотелось задать множество вопросов какому-нибудь стажёру, но друзей в IT совсем не было, поэтому я попыталась дать ответы на главные вопросы новичков на основе собственного опыта.

https://habr.com/ru/companies/ozontech/articles/996238/

#стажировка_в_it #тестирование #ozon_tech #собеседование_в_it #обучение_тестированию #бадди #процессы #бигтех

Стоит ли ходить на стажировки QA? Мой опыт в Ozon Tech от отклика и до нашей эры

Привет, Хабр! Я Маша, младший инженер по тестированию в Ozon Tech, а совсем недавно — стажёр. Сейчас я опишу, как здесь оказалась и что будет с вами происходить, если вы начнёте карьерный путь в Ozon...

Хабр

Query Prediction, или как мы отказались от ANN и полюбили обратный индекс

Всем привет! Меня зовут Антон Пилькевич, я более четырёх лет занимаюсь ранжированием и текстовой релевантностью в поиске Ozon. И вот настал момент, когда у меня появилось время поделиться своими мыслями. В этой статье вас ждёт увлекательное путешествие в ML-мир текстового поиска Ozon, а также знакомство с флорой и фауной существующих решений в этой области!

https://habr.com/ru/companies/ozontech/articles/990180/

#поиск #machine_learning #deep_learning #big_data #nlp #ozon_tech

Query Prediction, или как мы отказались от ANN и полюбили обратный индекс

Всем привет! Меня зовут Антон Пилькевич, я более четырёх лет занимаюсь ранжированием и текстовой релевантностью в поиске Ozon. И вот настал момент, когда у меня появилось время поделиться своими...

Хабр

Миссия выполнима: как мы добились актуальности двух тысяч кешей

Привет! Меня зовут Влад, и я разрабатываю сердце витрины Ozon — сервис product-facade. Пару лет назад мы уже делились нашим опытом в этой статье , но с тех пор многое изменилось: выросли нагрузки, появились новые фичи и оптимизации, система стала сложнее и надёжнее. Прежде чем перейти непосредственно к актуальности кешей, давайте разберёмся, почему это так важно. Представьте: вы добавляете товар в корзину, но что-то пошло не так, и покупку совершить не удаётся — склад больше не возит в ваш ПВЗ. Даже 0.1% таких ошибок — это тысячи недовольных пользователей каждую секунду. А когда что-то массово меняется, разработчики вынуждены расследовать инцидент, чтобы понять, что проблема была всего лишь в устаревших кешах.

https://habr.com/ru/companies/ozontech/articles/971296/

#Redis #Valkey #кэширование #инвалидация_кеша #инвалидация_кэша #архитектура_системы #ozon_tech

Миссия выполнима: как мы добились актуальности двух тысяч кешей

Привет! Меня зовут Влад, и я разрабатываю сердце витрины Ozon — сервис product-facade. Пару лет назад мы уже делились нашим опытом в этой статье , но с тех пор многое изменилось: выросли нагрузки,...

Хабр

Как устроен Vulnerability Management в Ozon: внутренняя кухня киберзащиты

Всем привет! Меня зовут Андрей Иблеминов, я инженер группы управления уязвимостями в Ozon, в сфере информационной безопасности работаю более 5 лет. В данной статье я поделюсь своим личным опытом (и опытом моей команды) решения задач, связанных со своевременным обнаружением и устранением уязвимостей в ИТ-инфраструктуре Ozon.

https://habr.com/ru/companies/ozontech/articles/965728/

#vulnerability_management #управление_уязвимостями #сканирование_уязвимостей #ozon_tech #ozon

Как устроен Vulnerability Management в Ozon: внутренняя кухня киберзащиты

Всем привет! Меня зовут Андрей Иблеминов, я инженер группы управления уязвимостями в Ozon, в сфере информационной безопасности работаю более 5 лет. В данной статье я поделюсь своим личным опытом (и...

Хабр

Как, имея более 200 методов HTTP, смэтчить их с тем, в какие сервисы они ходят

Привет, Хабр! На связи команда Seller API, а именно её тимлид Саша Валов и старший разработчик Никита Денисенко. В этой статье мы разберём одну из проблем большого API и расскажем, как мы её решили. Вступление Seller API — это продукт, предоставляющий программный интерфейс для работы с маркетплейсом Ozon. Он позволяет системам продавца и Ozon обмениваться информацией. Seller API насчитывает более 200 методов. Эти методы удовлетворяют множество бизнес-потребностей и предоставляют доступ к широкому спектру сервисов Ozon. В основном методы API проксируют запросы к этим сервисам. Проблема Нашей команде необходимо оперативно давать ответы на вопросы а-ля «В какие сервисы мы, разработчики команды Seller API, ходим под капотом этой API-ручки?» или, наоборот, «В контексте каких API-ручек мы ходим в конкретный сервис или даже метод сервиса?». Эти вопросы с завидной регулярностью поступают от ребят из технической поддержки, которым необходимо расследовать неполадку, и ребят из продукта, которые систематизируют требования к новым функциональностям или к рефакторингу старых. Чтобы ответить на любой из этих вопросов, нам чаще всего приходится смотреть код. Дежурный разработчик сначала идёт в proto-файлы, описывающие контракт API (да, мы в Ozon описываем и внешние, и внутренние API с помощью proto-файлов). Погружаясь глубже вплоть до кода клиентов нижележащих сервисов, он находит нужные методы, в которые мы проксируем запросы. И, наоборот, из кода клиента необходимого сервиса, поднимаясь по слоям, разработчик понимает, где и как используется метод нижележащего сервиса.

https://habr.com/ru/companies/ozontech/articles/867630/

#grpc #grpcgateway #golang #ozon_seller_api #ozon_tech

Как, имея более 200 методов HTTP, смэтчить их с тем, в какие сервисы они ходят

Привет, Хабр! На связи команда Seller API, а именно её тимлид Саша Валов и старший разработчик Никита Денисенко. В этой статье мы разберём одну из проблем большого API и расскажем, как мы её решили....

Хабр