Embedded-разработчик на C++ в команду OpenBMC

Дата размещения вакансии: 07.10.2024
Работодатель: Яндекс
Уровень зарплаты:
з/п не указана
Город:
Москва
улица Льва Толстого 16
Требуемый опыт работы:
От 3 до 6 лет

Больше 15 лет Яндекс строит собственные дата-центры, совместно с партнёрами создаёт и дорабатывает оборудование для дата-центров: серверы, полки для устройств PCIe, дисковые полки, устройства для резервирования питания. За всеми этими устройствами нужно следить, удалённо управлять ими и собирать метрики. Для этих целей уже много лет мы используем OpenBMC — опенсорсный embedded linux для контроллера серверной материнской платы. С его помощью можно удалённо узнать всё о состоянии сервера, получить доступ к ОС, а также управлять сотнями тысяч серверов. А ещё всё — вообще всё — можно автоматизировать.

Какие задачи вас ждут

Разработка архитектуры программно-аппаратных решений
Время не стоит на месте, у нас появляются новые устройства, для которых надо разрабатывать архитектуру. При этом нужно учитывать нюансы эксплуатации и управления и закладывать возможность для измерения различных параметров. Важно не забывать про design for manufacturability: тестировать устройства во время производства не менее важно, чем смотреть на метрики во время эксплуатации.

Поиск проблем на стыке программной и аппаратной части
Embedded software — та самая прослойка, которая обеспечивает абстрагирование высокоуровневых интерфейсов от железа. Когда появляются ошибки на графиках, это далеко не всегда ошибка в коде. Иногда необходимо использовать все инструменты дебага: начиная c дебажных принтов и GDB, заканчивая помощью со стороны схемотехников с осциллографом и вдумчивым чтением схемы устройства.

Взаимодейcтвие с опенсорс-сообществом
Вы будете регулярно делать синхронизацию нашего форка OpenBMC с upstream и взаимодействовать с сообществом и мейнтейнерами проекта OpenBMC.

Мы ждем, что вы:

  • Уверенно пишете на C++;
  • Знаете классические алгоритмы, структуры данных и шаблоны проектирования;
  • Занимались разработкой под Embedded Linux;
  • Имеете опыт разработки клиент-серверных приложений, знаете сетевые протоколы;
  • Любите решать неожиданные задачи и докапываться вместе с коллегами до причины проблемы;
  • Работали с системами контроля версий.

Будет плюсом, если вы:

  • Имеете опыт системного программирования для Linux или baremetal на стыке программного кода и железа;
  • Работали над открытыми проектами;
  • Читаете принципиальные схемы.