Разработчик в 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
- Разрабатывали высоконагруженные распределённые системы