Arcadia CI
Язык буткемпа: Java
Технологии: ClickHouse, Spring, Temporal, YDB
Arcadia CI — высокоуровневая входная точка для всего, что связано с автоматизацией процесса разработки в монорепозитории Яндекса: сборка, тестирование и развёртывание.
Система запускает, следит за выполнением, собирает метрики и хранит результаты всех проверок всех пулл-реквестов, регулярных процессов и релизов, включая отведение веток, хотфиксы и откаты.
Мы предоставляем командам внутри Яндекса инструменты аналитики, поиска тестов, их метрики и историю выполнения, автоматические мьюты и механизмы аудита.
Через нашу систему каждый рабочий день проходит:
- 1,3 миллиарда результатов сборок и тестов;
- 240 тысяч пользовательских процессов;
- 8 тысяч релизов.
Стек
Технология | Комментарий |
---|---|
Java 21 (Spring) | Основной язык программирования. |
Lombok | Больше сахара и меньше бойлерплейта. |
**Temporal (внутри PostgreSQL)** | Распределённая отказоустойчивая система выполнения кода. |
YDB | Основная база данных. |
ClickHouse | Для публичной статистики и метрик. |
Команда
У нас небольшая распределённая мультифункциональная команда. Обитаем в Белграде, Москве и Питере. Нам помогает пара фронтенд-разработчиков и дизайнер. На встречах стараемся сидеть с включенными камерами.
Мы прислушиваемся друг к другу и ищем истину в диалоге, помогаем и открыты к конструктивной критике.
Переживаем за продукт всем сердцем — к работе подходим очень ответственно и не толерантны к проблемам, ничего не замалчиваем и не заметаем под ковёр.
Процесс разработки больше всего похож на Kanban.
Особенности
- Сочетаем в себе big data, highload и сложный продукт. Соответствующий баланс присутствует и в задачах: есть и оптимизации, и рефакторинги, и custdev.
- Почти никакой код не проходит мимо наших систем. Сами пользуемся ежедневно.
- Самые продвинутые и требовательные разработчики Яндекса — наши ближайшие и ценнейшие пользователи. Они знают нас по именам. И мы их не подводим :)
- Цели и задачи мы ставим себе сами, придумываем челленджи, ищем пути к совершенству.
- Уделяем много внимания нашей внутренней пользовательской документации и гордимся ею — ежедневно в ней находят ответы около ста человек.
Что надо иметь в виду
- Высокий порог входа и большой скоуп — каждый из нас и швец, и жнец, и на дуде игрец. Нужно быстро схватывать, понимать устройство всей экосистемы в целом, так как мы очень плотно работаем со смежными командами.
- Как и в любом инфраструктурном продукте, разработка требует повышенного уровня продуманности, стабильности, надёжности и качества: архитектуры, кода, тестов и документации. У нас нет тестировщиков и документаторов — автор полностью отвечает за своё творение.
- Мы исповедуем DevOps и у нас есть on-call дежурства: раз в неделю нужно следить за мониторингами и курировать редкие инциденты. Ночи и выходные почти всегда спокойные.
- Также мы сами себе техподдержка и помогаем пользователям — нашим коллегам. Нужно уметь работать с людьми, слушать их боль и выявлять сценарии, нельзя бездумно бросаться делать новые фичи.
- В зону нашей ответственности не входят непосредственно среды исполнения и кластер распределённой сборки — этим занимаются более низкоуровневые системы: Distbuild, Tasklets и Sandbox.
Вызовы
- Наша основная задача — надёжное масштабирование под растущую нагрузку. Множество новых команд подключаются к нашим системам и рассчитывают на нас, а любой простой обходится компании очень дорого.
- Параллельно нужно реализовывать новые возможности по запросам пользователей с оглядкой на внешних конкурентов (TeamCity, GitHub Actions, и т. п.), соблюдая хрупкий баланс между гибкостью и захламлённостью.
- Также мы работаем над инструментами, которые помогут командам в монорепозитории массово улучшать качество своих тестов и двигать разработку в направлении green trunk.
- При этом важно не только не повышать, но и снижать кривую обучения — делать сервис удобным, прозрачным и понятным «из коробки», а на возникающие вопросы иметь исчерпывающую документацию и готовые продуманные рецепты под основные сценарии.
Дополнительные материалы
Страница запуска
Страница релиза
Статус выполнения тестов