Junior Data Engineer / MLOps

Зарплата

до 160 000 ₽

Местоположение и тип занятости

Полный рабочий деньМожно удаленно

Компания

Платформа автоматизации маркетинга. Помогаем компаниям расти за счет эффективной коммуникации.

Описание вакансии

Условия работы

Mindbox — крупнейшая в России облачная платформа автоматизации маркетинга, в пятерке B2B SaaS России. Помогаем компаниям — от ДоДо Пиццы и МВидео до ПИК и МИФ расти за счет эффективного маркетинга. Без спама.

Ищем python-разработчика, который хочет быстро дорасти до уровня senior в области MLOps и Data Engineering.

У нас:

  • Система для запуска и АБ-тестирования моделей на Airflow over K8S c 2000 пересчетов моделей в день, 10 минут время доставки кода в прод
  • Кроссфункциональная команда продукта рекомендаций из DS, PO, Python и C# разработчиков, 100+ человек в разработке, есть у кого поучиться: у нас работают докладчики конференций DotNext, Yandex.Scale, AgileDays
  • Наш стек: python 3.7, pandas, numpy, sql, docker, kafka, GHA, Octopus, K8S, Helm, Я.Облако, Azure, Prometheus, Grafana, AlertManager, Graylog, Sentry, Amixr.io
  • Особенная культура: право вето у каждого, открытые финансы и зарплаты. Без ограничений роста: навыки и заработок начинающих разработчиков часто растут в два раза за первый год-два работы (подробнее об инженерных командах: https://jobs.mindbox.ru/dev/)

В ближайшие задачи команды входит полный переезд высоконагруженной инфраструктуры обучения, АБ-тестирования и деплоя рекомендательных ML-моделей на Airflow/K8s. Затем будем обновлять ETL-стек с SQL/pandas до Spark/DeltaLake и работать над улучшением developer experience для наших DS.

Ожидаем, что ты:

  • Пишешь поддерживаемый код на python
  • Знаешь, что такое ООП и шаблоны архитектуры
  • Работал с pandas, не боишься кода математиков, готов помогать DS с code review и проведением исследований

Станет плюсом и будет возможность изучить:

  • Airflow
  • Micorservices/k8s
  • Kafka
  • Spark
  • Prometheus

Бонусы


Удаленно / гибрид / офис в Москве или Ереване.

  • Офисы с заботой о людях: еда, кухня, комнаты по 6-10 человек, комнаты для зума, забота и комфорт
  • Десктоп i9 с SSD или MacBook Pro, 2x4K монитора. В т.ч. для удаленных
  • Спорт, квесты, настолки, ЧГК, VR и караоке
  • Безлимитные отпуска, саббатикал, болезни без справок, свободный график
  • 300 000 ₽ в год на софинансирование образования, медицины, спорта, путешествий. Книги бесплатно

Дополнительные инструкции

Для отклика на вакансию необходимо выполнить тестовое задание.

Результаты выполнения заданий должны быть предоставлены в виде ссылок на репозитории в GitHub.

Задание No1.

Есть Pandas DataFrame со столбцами [“customer_id”, “product_id”, “timestamp”] , который содержит данные по просмотрам товаров на сайте. Есть проблема – просмотры одного customer_id не разбиты на сессии (появления на сайте). Мы хотим разместить сессии так, чтобы сессией считались все смежные просмотры, между которыми не более 3 минут.

Написать методом который создаст в Pandas DataFrame столбец session_id и проставит в нем уникальный int id для каждой сессии.

У каждого пользователя может быть по несколько сессий. Исходный DataFrame может быть большим – до 100 млн строк.

Задание No2.

В SQL базе данных есть продукты и категории. Одному продукту может соответствовать много категорий, в одной категории может быть много продуктов.

Напишите HTTP API через которое можно получить:

список всех продуктов с их категориями,
список категорий с продуктами,
список всех пар «Имя продукта – Имя категории».

Если у продукта нет категорий, то он все равно должен выводиться. Если у категории нет продуктов, то она все равно должна выводиться.

Проект должен содержать docker-compose.yml файл, через который можно запустить сервис и проверить его работу.

Дополнительно оценим покрытие кода юнит-тестами.