Центральный административный округ, район Хамовники, квартал Красная Роза
В Яндексе есть целая экосистема внутренних инструментов для разработчика: у нас свои системы для контроля версий, сборки, непрерывной интеграции, деплоя и многое другое.
Мы разрабатываем Arc — это легковесная система контроля версий для монорепозитория. Интерфейсно Arc очень похож на Git, но архитектурно это куда более масштабируемая и централизованная система, поэтому отказоустойчивость и быстродействие — её ключевые свойства. Наша система контроля версий способна работать с репозиториями, размеры которых больше нескольких десятков терабайт. Arc использует виртуализацию рабочей копии вместо скачивания всех данных репозитория: это позволяет занимать место на диске только для хранения локальных изменений. Чтобы быстро показывать историю изменений файлов, мы применяем сложные алгоритмы и индексы.
Продукт растёт год от года и является основным хранилищем кода Яндекса. Технически это проект на современном С++ с корутинами, асинхронным общением с базой данных, многоуровневым кэшированием и gRPC-интерфейсом.
Какие задачи вас ждут:
- Вам предстоит улучшать пользовательский опыт разработчиков Яндекса. Git задал стандарт ведения работы с коммитами, ветками и PR'ами, но мы знаем, как сделать проще, не лишая пользователей возможности использовать привычный для них Git-like flow.
- Вы будете заниматься развитием сервиса: вас ждут публичные API, rate-limiter, работа с многоуровневыми кэшами, наведение порядка в миграциях и базах данных и многое другое.
- В команде есть технический лидер, с которым предстоит наладить совместные процессы работы.
- Наша команда расположена в нескольких городах и странах, поэтому вам потребуется умение организовывать работу распределённой команды.
Мы ждем, что вы:
- Понимаете, как устроены современные системы контроля версий (например, Git)
- Умеете управлять людьми и строили внутренние процессы
- Ведёте проекты, умеете расставлять приоритеты и контролировать выполнение задач
- Имеете опыт разработки на C++