Сервис транспорта нотификаций

🚀 О сервисе и наших задачах

Наша команда делает транспорт для отправки нотификаций в реальном времени от любого сервиса Яндекса к конечным пользователям - push.yandex.ru. Через наш сервис ежедневно проходят десятки миллиардов сообщений: пришло новое письмо — мы уведомим, подъехало такси — мы позовем, изменился контент веб-страницы — мы обновим.

Сервис работает по классической publish subcribe схеме. Конечные устройства на самых разных платформах - мобильные приложения, браузеры, десктопное ПО, веб-интерфейсы и даже железные устройства - подписываются на уведомления. Базовая задача транспорта - связать их между собой.

Мы поддерживаем работу с разными каналами уведомлений, работаем над качеством и добавляем новые возможности по мере их появления в платформах. Например, сделали поддержку живых уведомлений, которые появились в iOS 16.1.

У нас есть и собственный транспорт на базе протокола WebSocket для любых платформ, где отсутствует или не эффективен нативный транспорт. Представьте, что у вас в один конкретный момент времени подключены тридцать-сорок миллионов клиентов. Насколько аккуратно вы будете с ними работать? Как будете перезагружать приложение на серверах? Как обеспечите высокую доступность (99,99%)?

🚣🏻 Команда и подход к разработке

Транспорт разрабатывает небольшая распределенная команда инженеров из разных городов и стран. Мы постоянно на связи онлайн (ежедневные встречи) для обсуждения проектов, обмена опытом и взаимопомощи.

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

В то же время результат нашей работы - это не код, а работающая инфраструктура, которой доверяют десятки сервисов всего Яндекса.

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

👨🏻‍💻Что будем делать

На ближайший год у нас абмициозная задача сделать технологию доступной широкому кругу пользователей вне Яндекса и запустить сервис нотификаций в каталоге Yandex Cloud.

И как всегда:

  • реализовывать новые транспорты до конечных пользователей;
  • придумывать алгоритмы для обеспечения высочайшей отказоустойчивости;
  • оптимизировать распределение нагрузки.

🚲 Стек

🛠️ Мы используем C++20, Python, git, boost asio, PostgreSQL, Linux.

Основные протоколы - HTTPS, WebSocket, HTTP/2.

🕵🏻‍♂ Кого мы ищем?

Мы ищем бэкендера с навыками проектирования, написания качественного кода и тестов, пониманием сетевого стека и базовым опытом работы с Linux. Основной язык программирования на проекте - C++20.

У нас можно прокачать свои навыки построения высоконагруженных сервисов и обеспечения отказоустойчивости, поработать с распределенными системами.

Предыдущая
Следующая