← Все вакансии

Разработчик в Arc VCS

Наша группа — часть Platform Engineering в Яндексе.

Бо́льшая часть кода Яндекса лежит в огромном монорепозитории. Для комфортной работы с ним наша команда создала внутреннюю систему контроля версий Arc VCS. Она похожа на всем известный Git, однако Arc куда более масштабируемый и способен работать с репозиториями, чьи размеры переваливают за десятки терабайт. Чтобы отображать такие объёмы кода, мы используем механизмы виртуализации файловой системы. Чтобы правильно и быстро показывать историю изменений файлов, применяем сложные алгоритмы и индексы. Для ежедневного поддержания нагрузки в 200k RPS — свои легко масштабируемые во всех направлениях микросервисы. Поэтому, чтобы разрабатывать и поддерживать Arc, нужно быть специалистом очень широкого профиля.

Задачи и обязанности

Стабилизация сервиса

При написании Arc мы много где сознательно сре́зали углы. Сейчас Arc уже не молодой проект, а очень важный для компании сервис. Самое время поднимать кластеры для разных потребителей, внедрять рейт-лимитеры, улучшать кеширование и т. д.

Реализация сложных алгоритмов и индексов

Многие базовые алгоритмы Git давно внедрены и у нас, но их улучшение — непрерывный процесс. Например, недавно реализованный индекс истории позволил ускорить аналог git log в Arc в три раза — и кандидатов на улучшение ещё множество.

Разработка виртуальной файловой системы

Придётся потрогать inode’ы руками, разобраться в инвалидации кешей в fuse и в том, как сделать checkout в рабочей копии на 300 ГБ за единицы секунд.

Разработка своего воркфлоу пользователей

Git задал стандарт работы с коммитами, ветками и PR, но мы находим его излишне сложным. Хотим сохранить привычный Git-like flow — но при этом дать пользователям альтернативу, которая во многом упростит разработку.

Больше о бэкенде в Яндексе — в канале Yandex for Backend

Требования

  • Разрабатывали на C++ и любите этот язык
  • Понимаете хорошие практики разработки сервисов

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

  • Понимаете принципы построения современных систем контроля версий
  • Занимались системным программированием для Linux, Windows, macOS
  • Разрабатывали высоконагруженные распределённые системы
Linux Git
Откликнуться →