Сервис транспорта нотификаций
🚀 О сервисе и наших задачах
Наша команда делает транспорт для отправки нотификаций в реальном времени от любого сервиса Яндекса к конечным пользователям - 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.
У нас можно прокачать свои навыки построения высоконагруженных сервисов и обеспечения отказоустойчивости, поработать с распределенными системами.