Разработчик-эксперт в направление распределенных систем

МоскваC++Специалист
Вакансия закрыта
Яндекс — это данные. Это то, что мы потребляем и производим. Каждую секунду мы обрабатываем петабайты данных на сотнях тысяч машин в миллионах контейнеров. И этой обработкой нужно эффективно управлять.
Мы разрабатываем Kubernetes в Яндексе — Yandex Planner. Yandex Planner обеспечивает инфраструктуру управления ресурсами (оборудование) и сервисами (контейнеры) во внутреннем облаке Яндекса, где живут: Поиск, баннерные системы, кластеры MapReduce и просто все остальные сервисы Яндекса. Именно нам доверили разрабатывать решение, влияющее на весь Яндекс. Наша область интересов затрагивает всю инфраструктуру Яндекса: серверы, сети, пропускную способность и разделение I/O, предсказание нагрузки и распределение ресурсов, сетевые топологии внутри датацентров и между датацентрами. Реализуется это решение в виде отказоустойчивых горизонтально масштабируемых систем, соединяющих датацентры.

Задачи, которые мы готовы доверить вам:

  • дизайн, разработка и автоматизация Yandex Planner и окружающей экосистемы;
  • анализ производительности, поиск узких мест, мониторинг и интерпретация работы системы, планирование роста и масштабированиe;
  • разбор сложных ситуаций как на уровне приложений, так и на уровне оборудования;
  • оптимизация прикладных и аппаратных решений;
  • взаимодействие с другими командами Яндекса для поддержки их решений в экосистеме Yandex Planner.
Мы ищем уникальных специалистов.

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

  • знаете, что такое Paxos, и понимаете, что такое split-brain и как писать код с учетом network partitioning;
  • разбираетесь в том, что такое eventual consistency (CAP), знаете, что такое exactly once, at least once и at most once, и понимаете, в каком случае что лучше;
  • пишете код на С++ на fiber-корутинах в событийно-ориентированной архитектуре;
  • можете написать горизонтально масштабируемый бекенд с 10 млн запросов в секунду, хорошо понимаете возможные проблемы, алгоритмы и подходы, помогающие в их решении;
  • разбираетесь в TCP/IP-стеке, понимаете, что такое TCP-окно и ECN, и умеете это отлаживать;
  • понимаете внутреннее устройство Linux и процессоров достаточно хорошо, чтобы выбрать hyper-threading или CPU affinity; working set или shared memory, когда нужно использовать huge pages, а когда нет.
Мы ищем разработчиков очень высокого уровня и понимаем, что сложно найти человека, разбирающегося сразу во всем. Поэтому даже если вы знаете и умеете не 100% перечисленного, мы с удовольствием с вами встретимся. У разработчиков такого высокого уровня мы не проверяем знание синтаксиса C++, мы сразу назначаем встречи с ведущими разработчиками Яндекса.