Разработчик на С++ в YI (команда транспорта нотификаций)
Наша команда разрабатывает крупный инфраструктурный сервис нотификаций для всех сервисов Яндекса. Для него характерны высокие нагрузки, сложные технические задачи и архитектурные вызовы. Мы помогаем самым разным продуктам быстро взаимодействовать с пользователями по ежедневным сценариям в реальном времени. Через сервис проходят миллиарды сообщений в сутки: пришло новое письмо — мы уведомим, подъехало такси — мы позовём, изменился контент веб-страницы — мы обновим.
В команде широко используется C++ последнего стандарта, Boost, PostgreSQL, Git, налажены прозрачные процессы, широко применяются практики гибкой разработки и бережливого производства: ограничение незавершённой работы, предварительное проектирование, код-ревью, парное программирование. Разработчики решают самые разные задачи — от асинхронного программирования до распределённых систем и реализации требований конечного продукта.
Наши материалы:
- Статья «Когда почта доставляет: боремся с потерями push-уведомлений в iOS»
- Выпуск подкаста «До нас дошло» — «Получите, распишитесь!»
Задачи и обязанности
Разработка новых каналов доставки
Вы будете проектировать, разрабатывать и внедрять новые каналы доставки — например, отвечать за отправку СМС, уведомлений в Telegram или событий в Yandex Message Queue.
Масштабирование и оптимизация стабильности
Вы поможете обеспечивать высокую доступность (SLO 99,99%) и масштабировать сервис (сейчас мы обрабатываем около 300 тыс. запросов в секунду в API). Для этого, например, необходимо эффективно работать с WebSocket-соединениями: уметь быстро удалять старые подписки и создавать новые, когда 30 млн. соединений одновременно переподключаются.
Интеграция с экосистемой Yandex Cloud
Вам предстоит тесно работать с другими облачными сервисами: интегрировать Cloud Notification Service с системами управления доступом (IAM), биллингом и другими.
Больше о бэкенде в Яндексе — в канале Yandex for Backend
Требования
- Уверенно владеете C++ и используете его в продакшен-разработке
- Знаете классические алгоритмы и структуры данных и умеете применять их на практике
- Понимаете основы многопоточного и асинхронного программирования
- Умеете писать читаемый и поддерживаемый код, участвовать в код-ревью
- Готовы разбираться в сложных системах и постепенно брать на себя больше ответственности
Дополнительные требования
- Работали с Linux и серверной разработкой
- Имеете опыт разработки сетевых или распределённых сервисов
- Понимаете сетевой стек (TCP/IP, HTTP, взаимодействие сервисов)
- Знакомы с Go или готовы его использовать
- Понимаете основные принципы проектирования систем и сервисов
Похожие вакансии