Arc VCS

Язык буткемпа: C++
Технологии: Fuse, YDB

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

Стек

C++ Основной язык
Go Небольшие сервисы
Python Большое количество интеграционных сервисов

Команда

Наша команда маленькая — четыре человека. Все участники команды разбросаны по миру: мы располагаемся в Новосибирске, Москве и Белграде, поэтому видимся преимущественно на созвонах, а общаемся в основном чатах. Однако без офлайн-общения никуда — мы любим устраивать совместные командировки и собираться в одном городе, для этого не нужно искать веский повод.

Особенности

  • Arc — один из важнейших инфраструктурных сервисов Яндекса, ведь это буквально единственная точка входа для редактирования и чтения кода как пользователями, так и другими внутренними сервисами. В мире существует очень немного аналогов Arc. Все эти аналоги сосредоточены в руках крупнейших компаний (например, Google Piper и Facebook Sapling), поэтому работа в нашей команде, в первую очередь, возможность поработать над уникальным и действительно важным проектом. Кроме того, у нас есть намерение выйти в open-source, а это — отличный способ рассказать миру о себе как о разработчике.
  • Чтобы справляться с задачами, потребуется хорошо разбираться и в системном программировании, и в особенностях ОС, и в сложных алгоритмах для графов и текстов, а также в бэкенд-разработке. Не все из этого навыки, которыми нужно владеть на старте, но каждое из этих умений потребуется приобрести со временем. Наша команда — это не только место, где можно себя проявить, но и место, где можно многому научиться.

Что нужно принять во внимание

  • Наши пользователи — в первую очередь наши коллеги. С одной стороны, результат нашей работы мы видим сразу и всегда получаем живой отклик на любые изменения. С другой стороны, у коллег могут возникать вопросы, на которые неизбежно приходится отвечать, ведь иначе их работа может быть заблокирована. Чтобы систематизировать вопросы коллег, у нас есть очередь для поддержки и дежурства.
  • Работоспособность нашего бэкенда критична для Яндекса. Поэтому помимо ответов в очереди поддержки во время дежурств также придется следить за тем, что всё работает, и работает стабильно. Тут есть приятный нюанс — пики нагрузки и собственные попытки всё сломать при релизе происходят в рабочее время, так что разгребать инциденты по ночам не придётся.

Дополнительные материалы

https://habr.com/ru/company/yandex/blog/482926/— большая и подробная статья про Arc.

https://www.youtube.com/watch?v=PQWdvuo6Gzc

Следующая