YTsaurus (YT) — это ключевая платформа хранения и обработки данных в Яндексе: экзабайты данных, десятки тысяч серверов, десятки миллионов распределённых задач в день. Мастер-сервер в YT отвечает за дерево метаданных Кипарис, транзакции и блокировки, квоты и доступы. Кроме того, он отслеживает чанки, управляет таблет-селлами и выполняет множество других критически важных функций. Мастер-сервер обладает рядом технических особенностей, влияющих на характер нашей работы: * Он, по сути, является единой точкой отказа в кластере, а значит, к его надёжности и, следовательно, к качеству кода предъявляются повышенные требования. * Отказоустойчивость достигается за счёт Raft-подобного алгоритма репликации, что, в свою очередь, требует понимания, как эта репликация устроена. * Мастер-сервер — это stateful-компонент, а значит, мажорные релизы подготавливаются долго и с большой аккуратностью. * Состояние мастер-сервера достаточно велико, чтобы требовать шардирования. На практике это выливается в распределённый сервис из нескольких десятков отказоустойчивых шардов. Мы ищем в службу разработки мастер-сервера разработчика, искренне интересующегося инфраструктурой и стремящегося на совесть решать задачи обработки и хранения данных. Наша цель — не просто качественный код, но предоставление полезного и надёжного сервиса, на который разработчики Яндекса могут положиться.

Обязанности:

Внесение архитектурных улучшений
Вам предстоит вносить архитектурные улучшения, позволяющие лучше масштабироваться, чтобы соответствовать растущим потребностям пользователей. Реализация новых функций
Вы будете развивать возможности мастер-сервера: от поддержки новых атрибутов или типов узлов в Кипарисе до написания delta-таблиц, то есть дозаписи в статическую сортированную таблицу. Анализ поведения системы
Нужно будет анализировать поведение системы, чтобы выявлять узкие места и оптимизировать её.

Ключевые навыки:

  • Имеете опыт промышленной разработки на C++
  • Знаете классические алгоритмы и структуры данных
  • Ответственны и аккуратны

Дополнительные требования:

  • Знакомы с внутренним устройством баз данных
  • Понимаете специфику распределённых систем
  • Разрабатывали сетевые, многопоточные и асинхронные приложения