Обязанности:
R&D центры YADRO находятся в Москве, Санкт-Петербурге и Нижнем Новгороде, производственная площадка расположена в Московской области и строится завод полного цикла. На текущий момент нас уже более 2500 человек, и мы продолжаем активно расти и расширять команду, в связи с этим открываем поиск Principal Software engineer в Департамент обработки данных – часть большой команды разработки нашего флагманского продукта –TATLIN.UNIFIED. Продукт представляет собой современное хранилище, созданное для решения задач традиционных корпоративных приложений, больших данных и аналитики, которое используют в ЦОД, публичных и частных облаках. Команда создаёт самую сложную часть программного продукта СХД – набор высоконагруженных сервисов, реализующих сложные алгоритмы работы с данными, их кэширования, репликации, создания слепков(snapshots) и т.д.Наибольшая часть сервисов написана на С++ в соответствии с последними стандартами языка, часть сервисов написана на языке C в ядре Linux в тесной интеграции с аппаратной частью. Набор сервисов, которые разрабатываются в департаменте, реализуют так называемый Data Path СХД. Data Path СХД решает следующие задачи: Кэширование данных на запись и чтение с управлением политик наполнения кэша и вытеснения данных из кэша; Обеспечение консистентности данных между основной и резервной новой в режиме active-active для различных режимов работы системы; Синхронная и асинхронная репликация данных на удаленные системы; Создание слепков данных (снапшотов) и работа с ними; Реализация собственного гибкого, конфигурируемого решения для RAID; Автоматическая адаптация системы к профилю нагрузки для достижения максимальной производительности системы при различных сценариях и многое другое. Чем Вам предстоит заниматься: Разработкой высокопроизводительных data path, control/management path, уровня data protection и кластерных компонентов для системы хранения данных; Разработкой эффективных алгоритмов и структур данных для симметричного active-active кластера; Разработкой высокопроизводительных алгоритмов преобразования данных и алгоритмов уменьшения избыточности данных; Исследованием и решением проблем, связанных с производительностью и стабильностью; Разработкой механизмов репликации данных. Настройкой и доработкой различных подсистем ядра Linux, продвижением наработок в mainline ядра. Мы ожидаем от будущего члена команды: Понимание устройства современных компьютеров и операционных систем в целом; Уверенное понимание принципов создания дизайна и архитектуры программных продуктов; Опыт построения сложных программных продуктов и разработки архитектуры; Знание С и C++11/14/17; Отличное понимание как устроен Linux и Linux/POSIX API; Опыт анализа производительности отдельных приложений и системы в целом; Умение тестировать собственный код; Опыт написания многопоточных и/или асинхронных программ. Также необходимо быть знакомым с классическими алгоритмами и структурами данных. Будет плюсом: Наличие опыта разработки модулей ядра или опыт системного программирования. Мы предлагаем: Стать частью амбициозной продуктовой компании, вносящей вклад в мировое инженерное сообщество, а также ежегодно увеличивающей долю рынка и финансовые показатели; Конкурентный уровень заработной платы (готовы по достоинству оценить ваши знания и опыт) + премирование по результатам работы.