Обновить
32K+
119,62
Рейтинг
76 347
Подписчики
Сначала показывать

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

Уровень сложностиСредний
Время на прочтение27 мин
Охват и читатели11K

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

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

В этой статье я расскажу, что сделали мы, чтобы снизить нагрузку на систему: как заменили интерпретирующий движок формул на динамический компилятор, выполняющий построение эффективного байт-кода, отлично векторизующегося JIT-компилятором. Это текстовая версия доклада с Joker 2025 с дополнениями, которые не вошли в выступление или появились в проекте уже после конференции.

Читать далее

Улучшаем поисковые подсказки — от retrieval к генерации

Время на прочтение13 мин
Охват и читатели8.7K

Вы начинаете набирать запрос в поисковой строке на Ozon и сразу видите список вариантов. Иногда кажется, что поиск читает мысли. Хотя магии здесь нет. Есть система подсказок или саджестов (от англ. suggest), которая должна за доли секунды понять, что вы хотите, и предложить лучший вариант. На всё — 300 мс. Если она думает дольше, пользователь замечает «подвисание», раздражается и вводит запрос вручную.

Рано или поздно возникает вопрос, как одновременно держать высокое качество и жёсткие ограничения по скорости? Долгое время мы решали это классически. Брали готовые запросы и обучали градиентный бустинг над деревьями решений выбирать лучшие варианты. Работает? Да. Хватает ли этого? Уже нет. В какой-то момент мы упёрлись в потолок качества. Улучшать ранжирование становилось всё сложнее, а эффект был всё меньше. Тогда мы попробовали другой подход и начали генерировать подсказки, а не выбирать из готовых.

Читать далее

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

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели8.1K

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

В статье я расскажу, как мы в Ozon покрывали тестами работу пайплайнов в GitLab CI, какие требования нужно было учесть и как в итоге были устроены end-to-end-тесты для таких сценариев.

Читать далее

Высоконагруженные люди: как управлять давлением и не сломать команду

Уровень сложностиПростой
Время на прочтение15 мин
Охват и читатели7.2K

Разработка высоконагруженных систем — типовая инженерная задача. Для неё есть паттерны, инструменты и понятные подходы. Но что делать, когда нагрузке подвергаются не приложения, а люди? Когда одновременно растут сроки, количество задач и неопределённость — и сбой даёт уже не система, а команда?

Перегрузка до сих пор часто воспринимается как нечто нормальное: нужно просто потерпеть и ускориться. Но давление накапливается неделями, а затем начинает ломать фокус, решения, сроки и самих людей. В этом тексте я разберу, из чего складывается давление и как шаг за шагом из него выбираться. История основана на реальном опыте, но местами обобщена и усилена, чтобы нагляднее показать, как это происходит.

Читать далее

Одно кольцо, чтоб править всеми. Как гайды собирают большой продукт в единую систему

Уровень сложностиПростой
Время на прочтение16 мин
Охват и читатели6.5K

Когда продукт растёт, хаос в интерфейсах появляется почти незаметно. Одинаковые сценарии начинают решаться по-разному, команда тратит всё больше времени на повторяющиеся вопросы, а пользователи сталкиваются с непредсказуемым опытом. Удержать продукт от такого распада помогают понятные гайды и стандарты проектирования, которые фиксируют общие правила и собирают работу команды в единую систему.

Меня зовут Владимир Фрадков, я руковожу группой дизайна «Стандарты и развитие» в личном кабинете продавца Ozon. В этой статье я хочу поговорить о том, как упорядоченность и системность помогают в дизайне и почему единый документ с правилами может стать тем самым «кольцом всевластия» для вашего продукта.

Читать далее

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

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели5.7K

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

На примере редизайна «Корзины», я хочу показать, как сегодня меняется роль дизайнера в продукте, чем дизайн-стратегия отличается от просто красивого концепта, почему такие изменения невозможно делать в одиночку.

Читать далее

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

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели6.3K

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

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

Читать далее

Как с помощью A/B-платформы найти лучшее решение, если вариантов слишком много, чтобы тестировать все?

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели7.3K

Привет, Habr! Меня зовут Костя Козлов, я работаю в команде анализа и валидации экспериментов A/B-платформы Ozon. В предыдущей статье коллеги рассказали, как создать высокопроизводительную платформу сплитования пользователей на группы и стенд метрик. В этой статье расскажу, как построить поверх этого инструмент, который автоматически оптимизирует бизнес-метрики продукта за счёт "умного" перебора возможных вариантов его параметров.

Статья будет касаться всех кейсов, где необходимо найти оптимальные по бизнес-метрикам непрерывные параметры системы на данных из онлайн-экспериментов. Например, у вас есть алгоритм рекомендаций товаров, и вы хотите за счет настройки его параметров вырастить число заказов, не уронив при этом рекламную выручку.

Читать далее

Информационный шум в IT: как учиться, когда контента слишком много

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели14K

Привет, Хабр! Меня зовут Настя, я работаю методологом в команде проекта Route 256 — онлайн-курсов продвинутой разработки от экспертов Ozon Tech. В этой статье мы обсудим, что делать, если в жизни становится слишком много информационного контента.

Например, у вас уже несколько месяцев остаются открытыми 15 вкладок «почитать потом», в закладках лежит «идеальный роадмап по Go», а в рекомендациях — «10 must-watch-докладов про архитектуру». В IT это особенно заметно: технологии и инструменты обновляются быстро, а вокруг постоянно есть поток учебных материалов, чтобы оставаться в теме. Нужно с этим что-то делать или нет?

Читать далее

Ускоряем pandas, не переписывая код. Мой опыт с FireDucks

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели7.5K

Привет! Меня зовут Егор Лукьянов, я старший аналитик данных в Ozon Tech. В своей работе я часто сталкиваюсь с проблемой масштабируемости в pandas. Код, который быстро работает на гигабайте данных, начинает невыносимо тормозить на десяти. Уверен, эта боль знакома многим.

Сейчас есть быстрые альтернативы, например, Polars. Я сам пробовал переводить на него свои проекты. Скорость действительно впечатляет, но как в анекдоте есть нюанс: приходится переписывать чуть ли не весь код и привыкать к новому синтаксису. А это большая работа, на которую не всегда есть время.

И вот здесь я наткнулся на FireDucks — библиотеку, которая обещает решить эту проблему, просто заменив одну строку импорта. Звучало слишком хорошо, чтобы быть правдой. После опыта с Polars я был уверен, что где-то должен быть подвох.

Я решил проверить FireDucks на нескольких типичных задачах. В этой статье я хочу без лишнего хайпа поделиться тем, что у меня получилось. Мы посмотрим на реальные примеры кода, сравним скорость и разберёмся, где эта библиотека действительно хороша, а где могут быть проблемы.

Читать далее

От товара к предложению: как Ozon учитывает цену и доставку в ранжировании

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели9.8K

Всем привет! Меня зовут Станислав Ким, я ML-разработчик в команде качества поиска Ozon. В этой статье расскажу, как мы перешли от ранжирования товаров к ранжированию предложений, внедрили «матрицу памяти» для переноса статистики и получили +0,9% к GMV на пользователя.

Представьте простую ситуацию. Вы — продавец электроники. Выводите на Ozon новую модель робота-пылесоса. Чтобы ворваться на рынок, вы ставите цену на 20% ниже конкурентов и отгружаете партию на ближайший склад, чтобы доставка была «завтра». Логика подсказывает: алгоритмы увидят выгодное предложение (дёшево + быстро), подкинут товар в топ, и продажи взлетят.

Реальность: проходит день, два... а товар висит на 5-й странице выдачи. Потому что для алгоритма ранжирования ваш пылесос — «чистый лист». У него нет истории продаж, нет кликов, нет отзывов. Рядом в топе — конкуренты: они дороже, доставка дольше, но у них есть история: тысячи заказов за прошлый год. Алгоритм «любит» их за накопленную статистику, а ваше выгодное предложение игнорирует — он просто не знает, чего от него ждать. В индустрии эта проблема называется cold start — и с ней сталкиваются все крупные маркетплейсы.

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

Читать далее

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

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели14K

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

А началось всё с того, что я начала думать: а что дальше? Кем я могу стать, если ещё вырасту? Вакансий руководителей тестирования, а особенно руководителей отделов тестирования, не так много, а хотелось больше влияния, больше развития. И я решила прыгнуть вбок и сменить профессию: стать тимлидом разработки. Расскажу, как это было и чего стоит ожидать тем, кто задумывается о таком же повороте.

Читать далее

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

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели12K

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

Во время обучения тестированию мне хотелось задать множество вопросов какому-нибудь стажёру, но друзей в IT совсем не было, поэтому я попыталась дать ответы на главные вопросы новичков на основе собственного опыта.

Читать далее

Как устроена архитектура факторов ранжирования в runtime поиска Ozon

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели9.7K

Привет, Хабр! Меня зовут Лев. Я работаю в поиске Ozon. Сегодня я буду рассказывать про одну из составляющих поиска, а именно про ранжирование.

В этой статье расскажу:
- Что такое ранжирование и факторы ранжирования.
- Как работает поисковое ранжирование в Ozon.
- Как мы работаем с факторами ранжирования.

Я буду переходить от простых примеров к сложным — от орехов и белок к товарам и сервисам.

Читать далее

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

Уровень сложностиСредний
Время на прочтение21 мин
Охват и читатели11K

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

Читать далее

Разработчики всё ещё путают JWT, JWKS, OAuth2 и OpenID Connect — разбираем на примерах. Часть 2

Уровень сложностиСредний
Время на прочтение42 мин
Охват и читатели20K

Мы продолжаем наше погружение в мир аутентификации и будем разбирать всё на простых примерах с практикой на Go.

В первой части статьи мы разобрали, как устроен JWT, зачем нам refresh и access токены и почему в распределенных системах нам необходимо использовать асимметричные алгоритмы подписи. 

Теперь пришло время двигаться дальше и познакомиться с тем, что стоит поверх JWT: JWKS, OAuth 2.0, OIDC.

Читать далее

Поддержка как фундамент для входа в IT или честный разбор пути от L1 к L2 в Ozon

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели9.1K

Год назад я обрабатывал тикеты по инструкциям. Сегодня анализирую логи, пишу SQL-запросы и разбираю баги с разработчиками. Как же я дошёл до жизни такой?..

Привет, Хабр! Меня зовут Азиз (по паспорту Жавлонбек, но с детства все зовут Азиз — спасибо старшему брату за второе имя, которое прижилось). Я младший специалист поддержки внутренних сервисов в Ozon. Начинал на L1, через год перешёл на L2.

Это история о том, как реально меняется работа при переходе с первой линии поддержки на вторую. Честный разбор, что изменилось, какие навыки понадобились и почему поддержка стала для меня фундаментом для роста в IT.

Читать далее

Влияние селекторов CSS на скорость рендеринга web-приложения

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели11K

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

Читать далее

Разработчики всё ещё путают JWT, JWKS, OAuth2 и OpenID Connect — разбираем на примерах. Часть 1

Уровень сложностиПростой
Время на прочтение27 мин
Охват и читатели34K

JWT, SSO, OAuth, OpenID Connect — названия знакомые каждому разработчику. Но стоит спросить: «Зачем в продакшене нужен JWKS?» или «Чем отличается OAuth2 от OpenID Connect?» — уверенность сразу исчезает.

В этой статье мы разберём как устроен JWT и его подпись, зачем нужны access и refresh токены, что такое JWKS и в чём отличие OAuth от OpenID Connect.

Вместо скучных стандартов и спецификаций протоколов в статье будет один наглядный образ на примере отелей и пропусков. Это позволит не только запомнить, но и прочувствовать на реальных примерах, избавиться от хаоса и путаницы в голове, когда речь заходит об аутентификации и авторизации. Цель статьи — не дать «рецепт внедрения», а дать возможность понять, как это работает внутри и «пощупать» эти темы на Go

Читать далее

Защита от SYN-flood: теория, практика и где искать подвох

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели14K

Провайдер Panix в Нью‑Йорке внедрил систему блокировки спама по «чёрному списку» хостов, после чего стал мишенью затяжной SYN‑flood DDoS‑атаки, начавшейся 6 сентября 1996 года и на несколько дней фактически парализовавшей его почтовые, веб-серверы и серверы новостей, а также системы логина и DNS. Эта атака является одной из первых крупных DDoS-атак в истории.

SYN-flood по-прежнему остаётся одним из самых популярных инструментов в арсенале злоумышленников. Согласно отчёту Cloudflare за Q2 2025, этот вектор атак составляет 27% всех DDoS-атак на 3 и 4 уровнях, уверенно занимая «почётное» второе место. В таких условиях надёжная защита от SYN-flood критически важна для любого сервиса.

Меня зовут Лейли, я инженер по информационной безопасности в Ozon Tech, и сегодня расскажу о том, как мы внедряли и контролировали самый простой механизм защиты от SYN-flood и о подводных камнях.

Читать далее
1
23 ...

Информация

Сайт
ozon.tech
Дата регистрации
Дата основания
Численность
5 001–10 000 человек
Местоположение
Россия