Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025)

Материал из 0x1.tv

(перенаправлено с «20251003D»)
Докладчик
Виталий Потяркин.jpg
Виталий Потяркин

FrostFS — свободное программное обеспечение, на основе которого строится коммерческий продукт TATLIN.OBJECT. Свободное ПО для авторов FrostFS — это не только лицензии, но и стиль работы. Вся разработка ведётся в открытом репозитории, все изменения происходят в первую очередь там и только потом попадают в коммерческий продукт.

В докладе рассказывается, как инженеры инфраструктуры обеспечивают команды разработчиков техническими средствами и как участники проекта подстраивают процессы разработки под имеющуюся реальность. Авторы FrostFS ценят локальные сценарии и инструменты разработки, используют Forgejo и Gerrit для командной коммуникации, запускают CI в Jenkins. Все члены сообщества имеют доступ к одним и тем же инструментам и участвуют в одних и тех же процессах независимо от принадлежности к компании.

FrostFS — свободное ПО под лицензией GPLv3 и SDK под лицензией Apache-2.0, предназначенные для построения децентрализованной объектной системы хранения данных. На основе FrostFS в YADRO создан коммерческий продукт СХД TATLIN.OBJECT. Хотя большинство разработчиков являются сотрудниками компании, проект развивается по принципам свободного ПО: код, баг-трекер и процессы полностью открыты. Новая функциональность и исправления публикуются в первую очередь в FrostFS и только затем интегрируются в TATLIN.OBJECT. Все члены сообщества участвуют в одних и тех же процессах и используют одни и те же инструменты независимо от работодателя.

Задача инфраструктурной команды — обеспечить техническими средствами процесс разработки промышленного уровня. Сохраняя самодостаточность FrostFS как проекта, необходимо предоставить возможность интеграции компонентов в закрытый контур разработки в объёме, достаточном для производства ФСТЭК-сертифицированного продукта. При этом решения должны быть достаточно гибкими, чтобы адаптироваться к меняющимся условиям внешней среды: появлению новых технологий и методологий, устареванию и исчезновению существующих инструментов и сервисов. Несмотря на наличие корпоративного спонсора, проект не предполагает постоянный доступ к неограниченному объёму ресурсов.

Видео[править вики-текст]

Презентация[править вики-текст]

Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025).pdf

Thesis[править | править вики-текст]

Ключевые слова: инфраструктура для разработчиков, объектное хранилище.


Инфраструктура[править | править вики-текст]

Инфраструктура разработки FrostFS начинается с рабочего места разработчика — самого нижнего и децентрализованного уровня. Приоритет отдан локальным сценариям и инструментам. Все компоненты FrostFS можно собрать и запустить на обычном ноутбуке, там же выполнить юнит-тесты и компонентные тесты, а при необходимости запустить сценарии CI — по частям через правила GNU Make или целиком через запуск эфемерного экземпляра Jenkins. Подобные сценарии требуются редко: описание действий отделено от оркестрации их исполнения, поэтому отдельные шаги можно выполнять без участия Jenkins.

Для коммуникации внутри сообщества и координации разработки на собственном оборудовании (два сервера в ЦОД) развернуты сервисы Forgejo, Gerrit и Jenkins. Развёртывание описано в коде и основано на проверенных технологиях: Ansible, Podman, systemd. Мы стремимся строить воспроизводимые окружения в смысле возможности их повторного развёртывания. При этом сознательно избегается излишняя сложность, связанная с высокой доступностью, в пользу быстрого восстановления после сбоя.

Критически важно, чтобы отказ инфраструктуры не блокировал процесс разработки. Все текущие задачи — написание кода, тестирование, коммиты — выполняются локально. В случае недоступности централизованных сервисов (баг-трекер, рецензирование кода, CI) они могут быть восстановлены на любом доступном вычислительном ресурсе: новом сервере в ЦОД, арендованной виртуальной машине или офисном компьютере. Для восстановления достаточно репозитория с инфраструктурным кодом и актуального бэкапа пользовательских данных.

Все сервисы, предоставляемые разработчикам FrostFS, построены на свободном ПО. В Forgejo размещаются официальные репозитории, артефакты релизов (архивы, OCI-образы) и баг-трекер. Для рассмотрения правок используется Gerrit, который предоставляет больше возможностей для рецензирования кода, чем процесс pull request, считающийся вспомогательным.

Jenkins используется для запуска CI и автоматизации вспомогательных задач. Для улучшения пользовательского интерфейса и сглаживания недостатков Jenkins был разработан собственный DSL для описания сценариев CI. Репозитории компонентов владеют своими конфигурациями CI, и их разработчики могут изменять их без привлечения инфраструктурной команды. При необходимости возможен локальный запуск уменьшенной копии общекомандного Jenkins для экспериментов и отладки.

Компонентные тесты[править | править вики-текст]

FrostFS состоит из набора компонентов (сервисов), над которыми работают несколько команд. Такой подход даёт гибкость развития компонентов, но усложняет выявление проблем совместимости, не обнаруживаемых на уровне юнит-тестов.

Для проверки совместимости разворачивается эфемерное тестовое окружение, включающее минимально необходимый набор компонентов. Каждый компонент запускается в отдельном OCI-контейнере и взаимодействует с другими по сети. Управление контейнерами и построение графа зависимостей выполняется из общей тестовой библиотеки через фикстуры Pytest с использованием testcontainers. Корпус тестовых сценариев и пререлизные версии зависимостей описываются в XML-манифесте, по которому формируется окружение для запуска Pytest — фактически сборка монорепозитория по частям.

В результате получено воспроизводимое тестовое окружение, одинаково работающее в CI и на ноутбуке разработчика. Ошибки, выявленные в CI, можно анализировать и воспроизводить локально, а также локально проверять исправления. Благодаря кешированию OCI-образов тесты могут выполняться даже при нестабильном или отсутствующем подключении к Интернету.


Как мы разрабатываем FrostFS — инфраструктура, процессы, принципы (Виталий Потяркин, OSSDEVCONF-2025)!.jpg

Примечания и ссылки[править вики-текст]