👀 Дизайнеры, какая команда подходит вам по вайбам? Проверяйте на Вайб-чеке→ vibe.habr.com

Scala-разработчик в Товары

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

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

Компания

Все организации города, их контакты, адреса, время работы + трехмерная карта + маршруты проезда

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

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

Ищем middle+/senior Scala-разработчика, который будет заниматься сервисами обработки данных о товарах и услугах для пользователей 2ГИС.

Команда Товаров собирает и обрабатывает информацию о товарах из прайс-листов от десятков тысяч компаний, из тематических агрегаторов, от компаний в личном кабинете 2ГИС, с сайтов компаний (парсим их в автоматическом режиме) и других источников. После обработки информация о товарах поступает в сервисы, которые раздают её конечным пользователям.

Что делает Scala-команда

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

  • Система потоковая, масштабируемая и обеспечивает eventual consistency всех данных с гарантиями обработки данных at least once. Тут у нас десятки потоков данных, от сотен до десятков тысяч сообщений в секунду, и в них ~100M объектов.
  • Часть задач нам помогают решить ребята из команды data science. Эти решения на другом стеке мы оборачиваем в устойчивые, масштабируемые и поддерживаемые бэкенды с RPC-интерфейсом и интегрируем их в основной pipeline обработки данных.

Также на scala мы строим подсистему извлечения товаров с сайтов компаний. В нашем распоряжении более 1M доменов, и для них нужно запускать сбор данных по расписанию, следить за актуализацией данных для парсинга, предоставлять данные для модерации сайтов и товаров.

Технологии

  • Мы используем typelevel стэк: cats, cats-effect, fs2, doobie, http4s.
  • Храним данные в PostgreSQL, Elasticsearch и RocksDB.
  • Сервисы связываем через Kafka и RabbitMQ.
  • Для мониторинга и алертов используем ELK, Grafana и Prometheus.
  • Деплоим в Kubernetes через Gitlab.

Какие задачи предстоит решать

Совершенствовать систему сбора и доставки информации о товарах до конечных платформ-потребителей:

  • обеспечивать стабильность эксплуатации системы, учитывая, что объёмы обновляемых товаров постоянно растут;
  • увеличивать скорость доставки информации до конечных потребителей;
  • реализовывать сценарии, позволяющие пользователям бронировать/заказывать товары через 2ГИС;
  • поддерживать пользовательский контент (например, загрузка фото меню);
  • анализировать и обогащать товары дополнительной информацией, полезной для пользователя;
  • совершенствовать поиск по товарам.

С точки зрения парсинга сайтов организаций

  • извлекать максимально качественную и полную информацию с сотен тысяч доменов, тысячи товаров с каждого (с категориями, названиями, ценами, фото и описаниями);
  • обеспечивать стабильность и масштабируемость системы в соответствии с ростом потребностей.

Что ждём от кандидата

  • Желание писать в функциональном стиле.
  • Опыт разработки высоконагруженных бэкендов от 3 лет.
  • Опыт работы с SQL и/или NoSQL базами данных.

Преимуществом будет опыт эксплуатации JVM-приложений, разработки на Scala, дизайна высоконагруженных бэкендов и стриминговых систем обработки данных, а также опыт работы с Kafka — мы используем её очень активно.

Что предложим

  • Само собой, полностью белая зарплата, размер которой обсудим на собеседовании. Есть ДМС и другие IT-плюшки.
  • Работать можно и удалённо, и в офисе — как удобно. В Новосибирске у нас два больших офиса: одиннадцать этажей в Сан-Сити и два этажа в Технопарке. В Питере есть центр разработки на Литейной.
  • Строгого графика нет. Кто-то начинает работу в 9 утра, кто-то в 11, а кто-то — когда удобно ему и команде. Главное — выполнять задачи в срок и быть на связи с коллегами.