Middle/Senior Software Engineer [go + python] (в команду рекомендаций)

Дата размещения вакансии: 03.07.2024
Работодатель: Холдем
Уровень зарплаты:
з/п не указана
Город:
Москва
Требуемый опыт работы:
От 3 до 6 лет

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

Требования:

  • Уверенное знание go;
  • Уверенное знание python (3.9+) и опыт с asyncio;
  • Глубокие знания в области system design;
  • Самостоятельность и умение работать без ТЗ;
  • Опыт работы с Redis;
  • Понимание классических алгоритмов и структур данных;
  • Опыт работы с базами данных (запросы, миграции, оптимизация, профилирование);
  • 4+ лет опыта разработки стабильных и масштабируемых веб-сервисов и API (REST, JSON-RPC, gRPC);

Будет плюсом:

  • Опыт работы с высоконагруженными системами;
  • Опыт работы с ClickHouse;
  • Практический опыт работы в ML;
  • Опыт разработки рекомендательных систем.
Задачи:

  • ​​​Работать вместе с ML инженерами над разработкой высоконагруженной рекомендательной системы для видео ленты. Надо будет реализованные модели внедрить в продакшн: сервисы, которые занимаются обучением и сервисы которые занимаются инференсом. Сложность в том, что данных много — надо будет делать распределенное обучение. Обучение периодическое, поэтому важно научиться оптимально утилизировать ресурсы. Инференс ожидается высоконагруженный (тысячи RPS), поэтому нужно будет грамотно заворачивать модели используя компилируемые языки. Формирование рекомендаций должно быть до 100ms.
  • Часть системы уже написана на go, нужно будет переводить оставшиеся python сервисы на go + развивать имеющиеся.
  • Потенциальный переход на более подходящую БД (вместо Redis) для хранения данных и фичей с возможностью высокочастотного обращения к БД.
  • Дальнейшее развитие системы мониторинга и алертинга.
Технологии:
Пишем сервисы на python (FastAPI, Faust), go.
Все крутится в AWS.
Легкие сервисы разворачиваем в k8s-кластере, ML сервисы в AWS Sagemaker.
Раскатываем через Gitlab CI.
В питоне активно используем mypy, pylint, flake, isort, bandit — без прохождения линтеров пайплайн не пропустит merge request.
Пользовательские события отправляются сервисами на бэкенде в kafka.
Для аналитики из кафки мы собираем все в ClickHouse используя движок kafka в самом CH.
Любое изменение схемы в БД версионируем через миграции.
События из кафки вычитываем, аггрегируем и складываем в Redis (Используем Redis Stack, selfhosted).
Для тестирования моделей используем jupyter notebook managed в sagemaker — можем поднять любой инстанс по требованию с нужными ресурсами (GPU, CPU, RAM).
Мониторинг с помощью: prometheus, grafana, sentry, kibana.
Продуктовые метрики и дашборды строим в Datalens.

​​​​
Условия:

  • GPU/CPU сервера в облаке;
  • Топовое оборудование и весь необходимый софт;
  • Офис в шаговой доступности от метро Добрынинская / Серпуховская;
  • Возможность удаленной работы;
  • Возможность получения опциона;
  • Гибкий график.

Дополнительно
Команда:
У нас в компании в основном продуктовые feature команды. Раньше мы были командой RnD, которая занималась всем, что связано с данными и машинным обучением, теперь мы выделили отдельную команду для ленты рекомендаций и начинаем ее формировать. Мы отвечаем за полный цикл своих разработок. Т.е. сами строим модели, заворачиваем в сервисы и выкатываем в прод. Сами мониторим. Сами несем ответственность за отказоустойчивость.
Стремимся вырастить всех внутри команды full-stack. Т.е. учим дата саентистов и дата аналитиков писать продакшн код. Инженеры учатся обучать модели. МЛ инженеры понимают как устроен продукт и продуктовая аналитика.
У нашей команды нет проджект менеджера или системного аналитика, кто писал бы нам Т. З. Мы сами понимаем приоритеты бизнеса, синхронизируемся с бизнесом. Сами формулируем задачи, декомпозируем их и распределяем внутри команды. Зачастую сами приходим к бизнесу с новыми решениями и идеями.
Работаем по 2х недельным спринтам. Каждое утро стендап. Каждую пятницу в конце спринта — демо. После демо всегда ретроспектива. Каждые 4 недели с каждым членом команды 1to1 с тимлидом. Каждые 6 месяцев у каждого Performance Review. Используем джиру, но без фанатизма.

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