Догфудинг, ИИ-помощники, кодонавигация: самое интересное про SourceCraft, новую платформу для разработки от Яндекса

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Сегодня Yandex B2B Tech в режиме технического превью открывает пользователям доступ к SourceCraft — платформе для разработки полного цикла, которая помогает создавать исходный код, управлять версиями, заниматься тестированием, сборкой, деплоить и сопровождать программные продукты. Её история началась в Yandex Infrastructure — эта команда развивает инструменты для создания и развёртывания приложений и сервисов внутри Яндекса и поддерживает инфраструктуру, на которой работают большинство разработчиков компании. Во многом поэтому значительная часть идей для новой платформы возникла благодаря догфудингу — практике использования собственного продукта командой его создателей.

Вместе с разработчиками платформы Ольгой Лукьяновой @ollka_lukianova и Сергеем Захарченко @neofelis узнаем, каково это — делать платформу для разработки, одновременно используя эту же самую платформу для написания кода, тестирования, проверки пул‑реквестов, сборки и деплоя.

Немного о догфудинге в Яндексе

Догфудинг — широко распространённая практика во многих командах Яндекса. Например, все сотрудники внутри компании используют систему для управления задачами и процессами Yandex Tracker, который улучшается благодаря обратной связи и внешних, и внутренних пользователей.

В случае с dev‑платформами всем разработчикам Яндекса также хорошо знаком внутренний монорепозиторий, который создавался с целью дать удобные инструменты разработки сотрудникам. Как уже рассказывали коллеги, одной из причин его появления была необходимость переиспользовать код внутри Яндекса, а также большой объём данных. Так что, с одной стороны, у команды был пример внутренних инструментов разработки, которыми можно вдохновляться. С другой стороны, было важно учитывать, что у монорепозитория одни задачи, а у SorceCraft — немного другие.

В частности, для монорепозитория используется своя система контроля версий, которая существует только внутри Яндекса. Из‑за заточенности на большие данные в такой клиент‑серверной системе данные хранятся на сервере, там же работают тяжелые алгоритмы. Это хороший компромисс, когда надо работать с большими монорепозиториями. А «в обычном мире» всё проще и стандартом индустрии остаётся git. Она встроена во все IDE, есть множество клиентов к ней. Поэтому в платформе разработки, которая нацелена на самых разных разработчиков, система контроля версий должна быть совместима с git.

В любой момент команда проекта готовилась переехать на собственную систему и продолжить разработку SourceCraft на самой SourceCraft.

Забавное наблюдение, как по внутренним ощущениям определить, что уже можно переезжать на тот продукт, который сам и разрабатываешь. Первая фаза процесса разработки в новом проекте — ты удивляешься, что всё работает. Если делаешь что‑то с нуля, то первое время процесс рождения приложения может вызывать восхищение. Но потом происходит фазовый переход: ты оказываешься в той стадии, когда удивляешься уже тому, что что‑то не работает. И начинаешь активно оформлять баг‑репорты и фича‑реквесты. Вот на этой фазе — уже можно переезжать.

Какие сложности у догфудинга в случае инструментов разработки 

Разработка SourceCraft стартовала в январе 2024 года, а в сентябре команда переехала сама на свой продукт. Разумеется, платформа ещё не была написана до конца. В связи с этим возникла пара трудностей.

Как не утратить объективность при тестировании и проверке качества. Практика догфудинга часто напоминает ситуацию «сапожника в сапогах», который шьёт сам для себя по собственным меркам. С одной стороны, разработчики хорошо представляют процесс разработки изнутри, их гипотезы не теоретические, а практические. Команда сразу на собственном опыте ощущает, если что‑то устроено неудобно, и стремится это исправить, чтобы дальнейшая работа стала проще. С другой стороны, этот опыт всё равно ограничен определёнными сценариями, и тогда важно, чтобы в команде было как можно больше людей с разнообразным бэкграундом и они могли стать репрезентативным прототипом будущей аудитории.

Я остаюсь фанатом догфудинга ещё с момента работы в JetBrains, но всегда стараюсь помнить не только про его плюсы, но и ограничения. Догфудинг плохо работает в сценариях, которые твоя команда не использует. Так или иначе, у всех разработчиков выстроены определённые процессы, которые складываются в определённый воркфлоу. А для остальных сценариев необходим QA, или другие команды, которые будут эти сценарии покрывать.

По этой причине в команду догфудинга попали как разработчики, которые имеют большой опыт работы с внутренним монорепозиторием, так и активные пользователи BitBucket, GitHub, GitLab, которые могут обратить внимание на совсем другие особенности интерфейса или процессов.

Ещё одна частично связанная проблема — при переезде на платформу, которая находится в стадии разработки, есть риск просадки скорости работы, и полностью свести его к нулю нельзя. Для решения обеих трудностей было важно выстроить быстрый луп обратной связи:

На начальном этапе у нас не было никаких дополнительных тестировщиков, мы работали внутри нашей команды разработки, где между нами уже налажены связи. С одной стороны, так мы сразу отловили и стабилизировали огромное количество проблем, которые делали больно нам самим. С другой — это замедлило нашу разработку, так как потребовалось время, чтобы устранить возникшие препятствия. Но поскольку эти проблемы болели у всей команды, они лечились с наивысшим приоритетом.

Заодно такой процесс позволил найти зоны, которые на начальном этапе не были покрыты end‑to‑end‑тестами — в дальнейшем для этих областей тоже можно написать дополнительные тесты. В хорошо выстроенном догфудинге это превращается в постоянный процесс.

Как выстроить работу с обратной связью. На старте сразу планировалось несколько основных источников фидбэка по работе в SourceCraft: сами разработчики платформы, некоторые сотрудники Яндекса из других команд, получившие ранний доступ, и первые пользователи технического превью. Поэтому для сбора обратной связи было важно собирать её через одно окно, а для себя разделить на два канала: баги и фича‑реквесты.

На первый взгляд, работа с багами выглядит прозрачнее. В Яндексе есть Zero bug policy — буквально «политика нулевой терпимости», где у каждой ошибки есть свой SLA и бюджет. Соответственно, для всех найденных ошибок важно сразу принять решение, не впадая в крайности наподобие тех, где нужно сразу править всё подряд или, наоборот, тикеты не заводятся вовремя. Чтобы этого избежать, команда проводит триаж: разбирает поступающие баги и расставляет приоритеты согласно критериям.

Так ресурсы команды чётко распределяются между багами, продуктовой разработкой, техническими задачами и поддержанием техдолга. И одновременно возникает меньше ситуаций, когда пользователи просто не могут оценить платформу с точки зрения полезной функциональности, потому что мешает блокер.

Работа с фича‑реквестами уже чуть сложнее и тоньше, здесь используются другие алгоритмы приоритизации, которые также учитывают голоса пользователей, например, RICE. Здесь важно не упустить ситуации, когда отсутствует какая‑то фича и это очень мешает разработчику жить.

При заполнении фича‑реквеста у пользователя платформы есть возможность самостоятельно оценить критичность пожелания. Затем тикет отправляется ответственным, которые определяют приоритет на основе похожей процедуры триажа. Все фича‑реквесты делятся по компонентам: фронтенд, бэкенд, CI, кодонавигация и так далее. Лиды этих направлений выстраивают упорядоченный бэклог с учётом приоритетов.

Весь этот опыт помогал создавать платформу полного цикла, которой хочется пользоваться самим. А выстроенная система приоритетов также помогала определить порядок выкатки инструментов вовне — это внесло свой вклад в продуктовый роадмап.

Что разработчики уже могут протестировать в SourceCraft

Доступ к возможностям SourceCraft решили открывать поэтапно, и на стадии технического превью в первую очередь предложили такой набор функций:

В будущем также добавятся импортёры из BitBucket, GitLab, зеркалирование и так далее. Пока, исходя из профиля работы пользователей, разработчики сосредоточились на проектах, которые находятся в опенсорсе и могут захотеть переехать на новый инструмент.

Немного подробнее о том, что появилось нового в платформе с момента первых анонсов.

Система контроля версий. В основе системы лежит GitCore — отказоустойчивый и масштабируемый git‑сервер. Это собственная имплеменатция git‑сервера, в основе которого лежит популярная библиотека go‑git. Если в обычном git слой хранения находится в локальной файловой системе, то в проекте создания платформы команда SourceCraft переработала библиотеку go‑git и перенесла слой хранения в облако: в Yandex Object Storage и Managed Service for PostgreSQL. Так удалось перейти к stateless‑архитектуре и получить горизонтальную масштабируемость, высокую доступность и отказоустойчивость.

Работа с кодом внутри SourceCraft. Мы уже рассказывали о том, как работали над навигацией по коду внутри платформы и добивались того, чтобы все типовые задачи было комфортно решать в одном интерфейсе. Но эта цель включает в себя не только удобную реализацию Go to Declaration, Get usages и Quick Info для каждого коммита и пул‑реквеста, но и несколько других возможностей:

Также просмотрщик независим от конкретного инструмента подсветки кода.

Работа с пул‑реквестами. Чтобы обеспечить качество принимаемых пул‑реквестов, в платформе есть несколько инструментов: удобный итеративный процесс для код‑ревью, CI для подключения автоматизированных проверок, подробная информация в том случае, когда вливаемая ветка содержит конфликты с целевой.

Для описания правил код‑ревью и настройки CI используется конфигурационный yaml‑файл. Команда разработки изучала prior art и дорабатывала синтаксис во время догфудинга, для того чтобы формат был простым для восприятия.

Какие ещё интересные идеи появились благодаря коллегам

  1. Поскольку в репозитории команды лежит код модулей, разрабатываемых разными подкомандами, появилась одна из идей — разделить пулы ревьюверов, ответственных за проверку изменений.

  2. Также на базе внутренней технологии Codesearch в платформе появились возможности поиска по коду. В основе технологии лежит квадграммный индекс и эффективные кодеки векторизированного сжатия чисел. Поиск по кодовой базе размером 20 ГБ отрабатывает за 44мс в 99-м перцентиле.

    Справа видим зону с результатами поиска и предпросмотром кода
    Справа видим зону с результатами поиска и предпросмотром кода
  3. Из опыта использования Yandex Tracker родилась функциональность Issues — инструмента, где можно заводить тикеты, репортить баги и отслеживать историю изменений в удобном интерфейсе. Команда внутреннего трекера создавала Issues как лёгкий и понятный инструмент для разработчиков. Из догфудинга появилась идея разметки тикетов через лейблы, а также создания приватных  и публичных тикетов.

    Сейчас вся обратная связь и сообщения об ошибках собираются при помощи Issues, тикеты публичны, за них можно голосовать и комментировать.

  4. Благодаря Markdown editor, у пользователей появилась возможность выбирать, в каком редакторе работать: можно писать в Markdown, а можно использовать WYSIWYG. Это тоже результат внутренней работы над корпоративной wiki, которая дорабатывается по обратной связи сотрудников.

  5. Большое количество замечаний и пожеланий к UI/UX также помогло учесть предпочтения разработчиков к организации рабочего места: от расположения кнопок до цветовой схемы, которая была скорректирована в результате догфудинга.

Что ещё в планах 

В ближайшее время в платформе также появятся функции сканирования секретов и поиска уязвимостей в цепочках поставок. Также к моменту публичного превью добавится публичный API и будет реализовано больше сценариев интеграции с Yandex Cloud, когда развернуть проект в облачной инфраструктуре можно одной кнопкой. Одновременно с этим, в будущем SourceCraft будет работать по модели on‑premise — для использования на собственных серверах.

Помимо этого, в платформе будут дальше развиваться средства автоматизации. В том числе, появятся новые AI‑инструменты для облегчения рутинных задач.


Полезные ссылки, чтобы первыми узнать о новостях проекта

Заявка на тестирование платформы — для участия в техническом превью.

Комьюнити-чат — новости и общение с командой SourceCraft в Telegram.

Вакансии в команде SourceCraft — если хотите постигать догфудинг с нами.

Источник: https://habr.com/ru/companies/yandex_cloud_and_infra/articles/885788/


Интересные статьи

Интересные статьи

Автор: Денис ЗакусилоПриветствую всех неравнодушных! Это заключительная статья цикла о переходе от модульной архитектуры к сервисам.[Записки тимлида] Битрикс: от модулей к сервисам[Записки тимлида] Би...
Привет! Меня зовут Михаил Шпак, я занимаюсь комплексной архитектурой технологических решений в сетевой части ИТ-холдинга Fplus, который выпускает широкий спектр высокотехнологичных электронных устройс...
За предыдущее десятилетие банки стали центром ИТ-инноваций и высочайшей культуры разработки и эксплуатации ИТ-сервисов. Однако из-за жёсткого регулирования внедрение в банках даже простых и привычных ...
Эксперты Positive Technologies обнаружили уязвимость в системе управления сайтом «1С‑Битрикс: Управление сайтом», похожая уязвимость была выявлена в «Битрикс24» в начале 2023 года....
Как можно получать элементы инфоблоков в 1С-Битрикс в ядре d7?У \CIBlockElement::getList(), на первый взгляд, есть свои преимущества, она задокументирована, о ней много статей на форумах. Её дебагинг ...