Yandex BareMetal

Наша команда делает новый сервис для аренды выделенных физических серверов в рамках экосистемы Yandex Cloud.

Исторически клиентские сервисы в Yandex Cloud строились на базе технологий виртуализации. Это даёт набор преимуществ:

  • виртуальная машина поднимается за секунды;
  • пользователю доступна очень гибкая настройка: явно можно указать необходимое количество ресурсов (vCPU и оперативной памяти);
  • из коробки решается задача отказоустойчивости и масштабирования.

При этом есть класс специфических задач, которые клиенты хотят решать на железных серверах. Например:

  • утилизация физических ресурсов сервера без дополнительных накладных расходов;
  • возможность максимально дешево запускать ПО, которое не разрабатывалось как cloud-native решение;
  • использование собственной системы виртуализации;
  • обеспечение L2-связности между серверами.

Yandex BareMetal позволяет клиентам решать все эти задачи и при этом иметь полный доступ к экосистеме сервисов и продуктов Yandex Cloud.

Какие задачи мы решаем

Быстрая выдача сервера

Выдача сервера за 10 минут — это стандарт индустрии BareMetal, который требует от команды следующих шагов:

  • установить сервера нужной конфигурации в стойки в ДЦ;
  • собрать сетевую фабрику, поддерживающую всевозможные клиентские сценарии;
  • с помощью автоматического тестирования убедиться в их исправности;
  • написать автоматику наливки этих серверов;
  • написать автоматику настройки клиентских сетей;
  • написать автоматику карантина и безопасной очистки физических ресурсов.

И вот тогда мы можем за считанные минуты по требованию клиента:

  • найти сервер нужной конфигурации, налить его предподготовленной операционной системой;
  • или дать клиенту возможность поставить свой собственный образ;
  • разметить диски и собрать их по необходимости в RAID-ы для отказоустойчивости;
  • привезти сетевые настройки на сервер и коммутаторы;
  • выдать доступы по SSH и iKVM.

Метрики и мониторинг

После получения доступа к своему серверу клиенту понадобится следить за его состоянием и оперативно реагировать на возможные аппаратные проблемы. Для этого мы разрабатываем удобные инструменты мониторинга, которые позволяют:

  • Следить за сетевыми метриками по пакетам/трафику/ширине полосы как для публичных, так и для приватных интерфейсов;
  • Контролировать серверные метрики оборудования: температуру процессора, скорость вращения кулеров, скорость чтения/записи с диска и многое другое.

Ближайшая задача — сделать отдельный агент для мониторинга и нотификаций, который клиенты могли бы устанавливать на свои сервера, чтобы мы могли в полуавтоматическом режиме отслеживать состояние метрик. Таким образом, наша автоматика сможет обнаружить проблемы с оборудованием еще до того, как их заметит пользователь, а наша поддержка предложит клиенту варианты обслуживания для замены вышедших из строя дисков, памяти или другого оборудования в серверах.

Сетевые сценарии

Мы предлагаем клиентам всевозможные сценарии:

  • выделение приватных и публичных подсетей;
  • выделение изолированных L2-сегментов;
  • возможность включить маршрутизацию через наш DHCP-сервер;
  • интерконнект в облачные сети (VPC), чтобы иметь доступ к другим своим ресурсам в Yandex Cloud без необходимости пускать трафик в публичный интернет.

И тут у нас впереди еще огромное количество продуктовой разработки:

  • cloud-init для настройки сети в любых образах;
  • всевозможные сценарии вокруг блоков публичных адресов;
  • поддержка IPv6;
  • DHCP для докер-контейнеров;
  • Load-балансеры;
  • файрволы;
  • интерконнект в on-prem инсталляцию клиента.

Как мы работаем

У нас распределенная команда в Москве, Петербурге и еще пяти городах. Несколько раз в год мы собираемся вместе, чтобы поработать бок о бок с коллегами, похакатонить перед важным этапами, посетить вместе конференцию, сходить в театр бар.

Мы формулируем свои планы на год вперед, а далее разбиваем их на более конкретные трехмесячные этапы. После этого декомпозируем их до гранулярных и понятных задач, которые делаем двухнедельными спринтами. В конце каждого спринта мы проводим внутреннее ревью, а раз в месяц делаем полноценное продуктовое демо, где показываем всем желающим наш инкремент.

В нашем проекте разработчики не просто «пишут код», у каждого члена команды есть возможность взять на себя новую роль и дополнительные функции:

  • предварительные исследования, разработка дизайн-документов и ревью выбранного подхода;
  • проектирование, реализация, поддержка сквозных фичей от начала и до конца;
  • обязательные практики CI/CD и ревью кода;
  • регулярные дежурства для более быстрого и качественного решения клиентских проблем.

Технологии

Сейчас мы пишем на Go: он отлично подходит для реализации бизнес-логики, прост и имеет встроенную асинхронность. Здорово, если вы знаете Go, а если нет, но готовы пробовать — супер, мы научим и поможем набраться экспертного опыта.

Мы подбираем удобные инструменты для решения наших задач, вот далеко не полный их список:

  • Postgres: для хранения мета-информации нашего контрол-плейна;
  • K8s: для развёртывания собственных инфраструктурных сервисов;
  • Temporal: для оркестрации работы большого количества микросервисов и решения сложных продуктовых задач;
  • Annet: для автоматизации настройки сетевого оборудования;
  • Yandex Data Transfer: для поставки данных для аналитики и создания бекапов базы.
Предыдущая
Следующая