Ищем разработчика базовой инфраструктуры
Дима Липин, руководитель службы базовой инфраструктуры Яндекс.ОблакаПривет!
Наша команда ищет разработчика базовой инфраструктуры для обслуживания внутреннего облака Яндекса. Это один из крупнейших в России геораспределенных MAAS (Metal-as-a-Service), который насчитывает десятки тысяч физических серверов (нод). Во внутреннем облаке развернуто большинство сервисов Яндекса: от Поиска до MapReduce. При этом одной ноде могут достаться разные нагрузки, так что наша команда должна не только обеспечить работоспособность ноды, но и ограничить влияние разных нагрузок друг на друга.
Metal-as-a-Service
Наша цель — предоставить внутреннему облаку Яндекса работоспособные вычислительные мощности. Для этого нужно уметь все: от ввода ноды в эксплуатацию до изоляции контейнеров по ресурсам. Какие сервисы для этого необходимы?
Начнем с «низких» энергий, запускаемых непосредственно на ноде:
- Ядро Linux: мы стараемся поддерживать кластер в актуальном состоянии и учимся обновлять весь парк нод хотя бы раз в полгода.
- Система контейнерной изоляции Porto поддерживает максимально надежные и гибкие конфигурации (например, вложенные контейнеры).
- Разнообразные нодовые агенты используются для разных задач: от настройки сети до управления eBPF для форсирования сетевых политик.
Поднимаемся к переходным и «высоким» энергиям:
- Host Manager управляет хостовыми конфигурациями (сотни различных комбинаций пакетов и настроек хоста).
- Собственный HaaS автоматизирует рутину по эксплуатации нод от ввода до демонтажа, в том числе все плановые работы вокруг нод.
- Демон Maxwell служит для перезагрузки, переустановки и обновления прошивки нод в фоновом режиме без последствий для пользователя.
Наконец, переходим к мониторингу:
- Juggler предназначен для событийного мониторинга.
- Netmon нужен для мониторинга связности сети.
- Тентаклей (тоже наш внутренний инструмент) используется для blackbox-мониторинга и вычисления показателей доступности кластера.
Чем занимается команда инфраструктуры
- Мы предоставляем механизмы для разделения ресурсов между контейнерами:
— развиваем свою систему контейнерной изоляции Porto, в которой сотни тысяч контейнеров.
— поддерживаем иерархические контейнеры, накладываем ограничения на процессоры, память, диски (в том числе на вход и выход), сеть.
2. Оказываем системную поддержку:
— боремся с нетривиальными проблемами «железа» и ядер на кластере.
— внедряем новые платформы, портируем наше ядро для симуляции сетевого стека, участвуем в тестировании нового оборудования.
3. Автоматизируем эксплуатацию кластера:
— полностью автоматизируем все процессы, затрагивающие ноду: ввод в эксплуатацию, восстановление в случае сбоев, проведение плановых работ со стойками или свитчами, вывод из эксплуатации или передача на другие проекты.
4. Настраиваем событийный, сетевой и blackbox-мониторинг.
5. Активно взаимодействуем с NOC, чтобы оптимизировать использование сети:
— форсируем сетевые политики, внедряем самовосстанавливающуюся сеть без задержек.
6. Используем стек: Python, Go, C++, Linux, eBPF, MongoDB и др.
Задачи, которые нам предстоит решить вместе с вами
1. Распределение и использование ресурсов. Нужно научиться эффективно использовать имеющиеся у нас ресурсы. Для этого мы планируем увеличить объем полезной работы, которую выполняет нода, без ухудшения метрик запущенных на ней приложений — например, за счет запуска MapReduce на простаивающих мощностях. Чтобы этого добиться, надо поработать над механизмами распределения ресурсов и решить некоторые проблемы.
2. Стабильность и надежность системы. Это одни из самых приоритетных показателей, которые нужно поддерживать на высоте одновременно с развитием и изменением компонентов облака. HaaS (Hardware-as-a-Service) можно считать единой точкой отказа, а он отвечает за доступность нод. Нужно вкладываться в безопасность сервиса, развивать интеграционное тестирование, упрощать систему, уменьшать долю рутины.
3. Событийный мониторинг (Juggler), который по количеству событий и нотификаций растет на 50% в год. Нужно научиться контролировать этот рост, внедрить механизмы квотирования. Но даже после внедрения нужно быть готовым к росту — для этого мы работаем над масштабированием системы.
Кого мы ищем
Помните цитату из Стругацких: «Лично я вижу в этом перст судьбы — шли по лесу и встретили программиста. Мне кажется, вы обречены»? Вот так и мы: ищем тех, у кого глаза горят, кто готов вместе с нами на порядок улучшить базовую инфраструктуру сервиса.
Если у вас остались вопросы, напишите в телеграм мне @blackwithwhite или нашему рекрутеру Яне Вебер @IT_Yana.