📍 Белград (Сербия)Астана (Казахстан)Ереван (Армения)Санкт-ПетербургМоскваПолная удалёнкаПомощь с переездом
Наша команда отвечает за software-часть внешней сетевой связности в Yandex Cloud. Мы строим систему доставки трафика для разных сценариев: IPv4-связность, Cloud Interconnect, Egress NAT, сетевой балансировщик нагрузки. Эти сервисы обслуживают десятки миллионов пакетов в секунду. У нас микросервисная архитектура control plane с gRPC-транспортом и Yandex Database в качестве хранилища данных. Команда называется так, потому что является своего рода вратами (gate) в Облако (cloud).
Технологии/инструменты
CGo
Про сервис CloudGate
Команда CloudGate занимается разработкой и обслуживанием следующих сервисов:
- Cgw-ipv4 (cgw - Cloud GateWay, CGW). Обеспечивает внешнюю сетевую связность по IPv4. Если ваша виртуальная машина в Yandex.Cloud имеет публичный IPv4 адрес, то во внешнюю сеть она ходит через cgw-ipv4.
- Cgw-ipv6. Обеспечивает связность по IPv6, пока используется только самим Yandex.Cloud.
- Egress-nat. Обеспечивает внешнюю сетевую связность по IPv4 для виртуальных машин без собственного IPv4 адреса. Фактически, работает как ваш домашний роутер: имеет набор публичных адресов, и обеспечивает трансляцию между публичными и приватными адресными пространствами.
- Cgw-dc. Обеспечивает прямую связность Yandex.Cloud с частными инфраструктурами клиентов cgw-dc. Позволяет строить безопасный транспорт с широким гарантированным каналом.
- Load-balancer, он же nlb. Сетевой балансировщик нагрузки (L4), обеспечивает внешнюю и внутреннюю связность вида "один ко многим", повышает отказоустойчивость сервисов наших клиентов.
Сеть можно условно поделить на "железную" и "программную". Последнюю, в свою очередь, можно поделить на внутреннюю и внешнюю. Команда CloudGate строит сервисы для внешней сетевой связности, напрямую взаимодействуя с "железной" и программной внутренней сетями.
О команде
- Наша распределённая команда объединяет разработчиков из Москвы, Екатеринбурга и Новосибирска. Кто-то работает в офисе, кто-то удалённо.
- Периодически мы берём командировки и собираемся все вместе, потому что пользу общения лицом к лицу никто не отменял.
- Члены команды являются специалистами в разных областях, кто-то пишет dataplane на C, кто-то сервисы на Go, работа найдётся всем.
- В команде используется Agile подход к планированию. Есть долгосрочное планирование с ежеквартальной синхронизацией с бизнесом и смежными командами. Разработка ведётся двухнедельными спринтами, синхронизация идёт ежедневными встречами.
Процессы и подходы к разработке
- В команде используется Agile подход к планированию. Есть долгосрочное планирование с ежеквартальной синхронизацией с бизнесом и смежными командами. Разработка ведётся двухнедельными спринтами, синхронизация идёт ежедневными встречами.
- Команда сама отвечает за работоспособность своих сервисов, поэтому существует роли основного и запасного дежурных. В среднем приходится около одного дежурства в неделю. Дежурный отвечает за обработку срабатыаний мониторинга и обращений смежников, в том числе L2 поддержки. Это стандартная практика для Yandex.Cloud.
- Приоритетными задачами для нас являются стабильная и надёжная работа сети. Сервисы проектируются с расчётом на работу в случае частичных отказов, поощряется автоматические действия по восстановлению работоспособности отдельных компонентов.
- Производительность является важной частью надёжности, мы стараемся обеспечить как вертикальное масштабирование отдельных узлов, так и горизонтальное машстабирование всей системы в сборе.
- Для проектирования новых сервисов или крупных изменений в существующих мы устраиваем внутренние дизайн-ревью, на которых обсуждаем предложенные подходы и их плюсы и минусы (как известно, в systems design нет идеального решения, а любое решение — это всегда набор trade offs).
Наши задачи
- Увеличить масштабируемость сервисов в десятки раз.
- Разрабатывать и внедрять новые сетевые сервисы.
- Улучшать внутреннюю архитектуру, оптимизировать взаимодействие со смежными сервисами.
Что нужно делать
- Разрабатывать control plane и data plane сетевых сервисов Yandex Cloud.
- Улучшать производительность и надёжность сервисов.
- Автоматизировать работу сложных сценариев кросс-сервисного взаимодействия.
- Проводить нагрузочное тестирование сервисов: прокачка BGP full view и т. п.
Ожидания
- Хорошо разбираетесь в виртуальных сетях и оверлеях, SDN, NFV, DPI, сетевых протоколах, маршрутизации и туннелировании, BGP, MPLS.
- Пишете надёжный высокопроизводительный код.
- Хорошо знаете Go или C.
Будет плюсом:
- Работали с VPP, DPDK, сетевой подсистемой ядра Linux.
- Знаете методы горизонтального и вертикального масштабирования сервисов.
- Работали с IaaS-сервисами в публичных облаках.
- Практикуете IaC-подход.
Илья Рыжов Talent Partner