Разработчик в команду Автосборки DevTools
Автосборка — CI-система «из коробки» для тысяч разработчиков. Она запускает большинство автотестов в монорепозитории Яндекса. Когда разработчик пытается закоммитить изменения, Автосборка определяет затронутые тесты, запускает их и, если всё прошло успешно, разрешает интегрировать код в trunk. После интеграции кода в trunk Автосборка запускает посткоммитные проверки, чтобы находить ломающие коммиты, уведомлять авторов и поддерживать качество основной ветки.
Технически Автосборка — это высоконагруженный сервис, использующий множество внутренних технологий, начиная с сервиса распределённой сборки DistBuild и заканчивая ML-предиктором, предсказывающим необходимое количество ресурсов и прогнозируемое время для проверки вносимых изменений. За сутки сервис проверяет более 10 тысяч пул-реквестов, выполняя более сотни миллионов автоматических тестов.
Мы помогаем тысячам разработчиков Яндекса быстро и безопасно вносить изменения в свои продукты, снижая время обратной связи и количество красных прогонов, и сейчас усиливаем команду разработки.
Задачи и обязанности
Увеличение доли быстрых и предсказуемых проверок
Мы постоянно совершенствуем Автосборку для ежедневной работы тысяч пользователей внутри компании, стремясь предоставить разработчикам лучший в мире CI «из коробки». Перед нами стоят задачи как ускорения времени проверок, так и повышения точности предсказания времени их завершения. Предстоит оптимизировать запуск тестов в монорепозитории: сокращать количество запускаемых тестов в проверках без потери качества, внедрить режим Fast Fail для немедленной остановки при первой критической ошибке, улучшить работу с flaky-тестами, повышать точность предсказания времени выполнения проверок.
Повышение эффективности
Совместно с командой вам предстоит переосмыслить концептуальное устройство Автосборки, чтобы справиться с текущим темпом роста нагрузки. Потребуется глубоко разобраться в устройстве самого сервиса, а также в предназначении, возможностях и гарантиях смежных сервисов. Предстоит улучшить балансировку и планирование нагрузки, повысить эффективность использования квоты в распределённой системе сборки и других внутренних системах.
Предоставление инструментов для анализа и отчётности
Нужно будет создать дашборды и отчёты по экономии ресурсов для отслеживания эффективности инфраструктуры, упростить управление доступом и квотами, чтобы облегчить администрирование и контроль затрат.
Больше о бэкенде в Яндексе — в канале Yandex for Backend
Требования
- Уверенно пишете код на Python и готовы при необходимости прокачаться во втором языке программирования, например C++
- Понимаете основы построения высоконагруженных и распределённых систем, умеете работать с очередями, сетевыми протоколами, БД
- Готовы погружаться в предметную область инструментов разработки, монорепозитория и внутренних сервисов
- Работали с CI/CD в проектах среднего и крупного размера: занимались настройкой пайплайнов, описанием сборки, интеграцией с системами тестирования
- Привыкли покрывать код тестами, следите за качеством и умеете читать чужой код не хуже, чем писать свой
Дополнительные требования
- Работали с инфраструктурными сервисами, системами сборки и тестирования, in‑house CI
- Решали задачи, связанные с графами зависимостей (графы сборки, графы тестов и т. п.)
- Оптимизировали производительность, занимались профилированием и работали с высоконагруженными сервисами
- Разрабатывали одновременно на C++ и Python в одном проекте