Москва, Санкт-Петербург, Екатеринбург, Новосибирск, Казань, Нижний Новгород
Офис, Гибридный
Команда: Yandex Infrastructure
Описание
Мы развиваем инфраструктурное контейнерное облако, в котором расположены сервисы, создаваемые тысячами разработчиков Яндекса. Всё ради того, чтобы запуск и эксплуатация сервиса занимали минимум времени, а стоимость ресурсов облака была минимальной. Под управлением внутреннего облака находятся более 110 тысяч серверов и заведено более 50 тысяч приложений — суммарно около миллиона контейнеров. Ближайший его аналог — Kubernetes , но наше решение позволяет запускать сервисы в одной инсталляции, масштабированной на весь Яндекс. В нашем облаке развёрнуты как крупные потребители, например Поиск или MapReduce в лице YT , так и микросервисы, которые хоть и крошечные, зато их многие десятки тысяч — например, весь сервис Такси. Мы не только помогаем запускать сервисы, но и даём пользователю всё, что нужно, чтобы эти сервисы эксплуатировать: настраиваем балансировку, предоставляем мониторинг поднятых сервисов, собираем логи, поддерживаем интеграцию с CI/CD. Относительно новое направление у нас — разработка единой инфраструктурной платформы (PaaS), которая объединяет в себе инфраструктурные сервисы и позволяет: скрыть от разработчика лишнюю сложность по созданию и настройке своего сервиса; хранить настройки сервиса рядом с кодом и применять GitOps-подходы при разработке своих сервисов. Основная часть платформы разрабатывается на Go, ещё мы активно используем компоненты Kubernetes, а ряд инструментов написан на Python. Service Mesh — концепция и важная подсистема платформы, которая позволяет управлять взаимодействием микросервисов друг с другом.
Какие задачи вас ждут
Проектирование и развитие Service Mesh Вам предстоит разрабатывать компоненты Service Mesh на Go для управления взаимодействием микросервисов: маршрутизацией, балансировкой, политиками безопасности. Вы будете оптимизировать производительность mesh-слоя в масштабах всей платформы (более миллиона контейнеров и свыше 50 тысяч приложений), реализовывать механизмы трассировки, мониторинга и сбора метрик для анализа сетевых взаимодействий. Интеграция с PaaS-платформой Вашей задачей будет глубокая интеграция Service Mesh с другими компонентами платформы: CI/CD, оркестрацией контейнеров, системами логирования. Вам предстоит разрабатывать API и инструменты для настройки mesh-правил через GitOps-подход (хранение конфигураций рядом с кодом), создавать прозрачный интерфейс для разработчиков, скрывающий сложность mesh-инфраструктуры. Обеспечение надёжности и безопасности Вы будете реализовывать механизмы mTLS, авторизации и управления политиками доступа между сервисами, проектировать отказоустойчивую архитектуру mesh-слоя, включая автоматическое восстановление при сбоях, а также участвовать в нагрузочном тестировании и оптимизации сетевых протоколов: gRPC, HTTP/2. Работа с инфраструктурными вызовами Вам нужно будет устранять узкие места в работе mesh-платформы на уровне сети и операционной системы (Linux, сетевые стеки), адаптировать опенсорс-решения (например, Envoy, Istio) под внутренние требования Яндекса. Также вы будете участвовать в масштабировании системы для поддержки экосистемы из тысяч микросервисов и крупных продуктов: Поиска, YT, Такси. Больше о том, как мы делаем внутреннюю инфраструктуру Яндекса, — в канале Yandex Infrastructure
Мы ждём, что вы
Занимались промышленной разработкой на Go или Python более трёх лет Применяли в работе классические алгоритмы Знаете классические структуры данных и особенностей работы с ними в Go или Python
Будет плюсом, если вы
Проектировали и разрабатывали распределённые и высоконагруженные сервисы Владеете проблематикой построения облачных сервисов Глубокое знаете Linux Занимались многопоточным и асинхронным программированием Имеете опыт сетевого программирования