H
HireSeeker
яндекс

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

яндекс · 10 дек.

Зарплата не указана

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

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

Подписывайтесь на телеграм-канал Yandex Infrastructure, чтобы узнать больше о том, как мы делаем внутреннюю инфраструктуру Яндекса.

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

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

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

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

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

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

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

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

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

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

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