Senior Software Engineer (в команду рекомендаций)
Требования
Местоположение и тип занятости
Компания
Описание вакансии
О компании и команде
Мы Международная IT компания, имеющая аккредитацию в Сколково. Наши продукты - это мобильные приложения высокотехнологической нагруженности в сегменте онлайн-платформ, способствующих общению, созданию контента и установлению связей между людьми по всему миру.
В настоящее время наша команда ищет опытного разработчика и коллегу в свою команду.
Задачи:
- Работать вместе с ML инженерами над разработкой высоконагруженной рекомендательной системы для видео ленты. Инференс ожидается высоконагруженный (тысячи RPS), поэтому нужно будет грамотно заворачивать модели используя компилируемые языки. Формирование рекомендаций должно быть до 100ms
- Создание на go новых сервисов, необходимых для ML - для обработки данных, работы с событиями, моделями
- Часть системы уже написана на go, нужно будет переводить оставшиеся python сервисы на go + развивать имеющиеся
- Потенциальный переход на работу с hot/cold БД (вместо одного Redis) для хранения данных и фичей с возможностью высокочастотного обращения к БД
- Дальнейшее развитие системы мониторинга и алертинга
Технологии:
- Сейчас есть сервисы как на go, так и на python (FastAPI, Faust).
- Все крутится в AWS. Легкие сервисы разворачиваем в k8s-кластере, ML сервисы в AWS Sagemaker.
- Раскатываем через Gitlab CI.Линтеры, тесты перед merge request.
- Пользовательские события отправляются сервисами на бэкенде в kafka.
- Для аналитики из кафки мы собираем все в ClickHouse используя движок kafka в самом CH. Любое изменение схемы в БД версионируем через миграции. События из кафки вычитываем, аггрегируем и складываем в Redis (Используем Redis Stack).
- Для тестирования моделей используем jupyter notebook managed в sagemaker — можем поднять любой инстанс по требованию с нужными ресурсами (GPU, CPU, RAM).
- Мониторинг с помощью: prometheus, grafana, sentry, kibana.
- Продуктовые метрики и дашборды строим в Datalens.
Ожидания от кандидата
- Уверенное знание go
- Глубокие знания в области system design
- Самостоятельнось и умение работать без ТЗ
- Опыт работы с Redis
- Понимание классических алгоритмов и структур данных
- Опыт работы с базами данных (запросы, миграции, оптимизация, профилирование)
- 4+ лет опыта разработки стабильных и масштабируемых веб-сервисов и API (REST, JSON-RPC, gRPC)
Будет плюсом:
- Опыт работы с высоконагруженными системами
- Знание python (3.9+) и опыт с asyncio
- Опыт работы с ClickHouse
- Практический опыт работы в ML
- Опыт разработки рекомендательных систем
Условия работы
- GPU/CPU сервера в облаке
- Топовое оборудование и весь необходимый софт
- Офис в шаговой доступности от метро Добрынинская / Серпуховская
- Возможность удаленной работы
- Гибкий график
Дополнительные инструкции
Команда:
У нас в компании в основном продуктовые feature команды. Раньше мы были командой RnD, которая занималась всем, что связано с данными и машинным обучением, теперь мы выделили отдельную команду для ленты рекомендаций и начинаем ее формировать. Мы отвечаем за полный цикл своих разработок. Т.е. сами строим модели, заворачиваем в сервисы и выкатываем в прод. Сами мониторим. Сами несем ответственность за отказоустойчивость.
Стремимся вырастить всех внутри команды full-stack. Т.е. учим дата саентистов и дата аналитиков писать продакшн код. Инженеры учатся обучать модели. МЛ инженеры понимают как устроен продукт и продуктовая аналитика.
У нашей команды нет проджект менеджера или системного аналитика, кто писал бы нам ТЗ. Мы сами понимаем приоритеты бизнеса, синхронизируемся с бизнесом. Сами формулируем задачи, декомпозируем их и распределяем внутри команды. Зачастую сами приходим к бизнесу с новыми решениями и идеями.
Работаем по 2х недельным спринтам. Каждое утро стендап. Каждую пятницу в конце спринта - демо. После демо всегда ретроспектива. Каждые 4 недели с каждым членом команды 1to1 с тимлидом. Каждые 6 месяцев у каждого Performance Review. Используем джиру, но без фанатизма.
Рост:
При желании, можно будет попробовать себя в разных задачах: аналитика, разработка, машинное обучение. В продакшн коде мы проводим подробное код ревью. Готовим статьи на habr. Планируем выступить на конференциях. На регулярных 1to1 мы фокусируемся на профессиональном росте - поэтому каждый занимается помимо того, что тем что нужно бизнесу - еще и тем, что ему интересно и драйвит.