Yandex Cloud открыла код «Весёлой Фермы» для автоматических preview-окружений
Каждый пул-реквест хочется не просто проверить тестами, а показать вживую — дизайнеру, менеджеру, соседней команде, чтобы все они смогли потыкаться в UI, порадоваться, понаходить баги и порасстраиваться. Казалось бы, что сложного: поднял окружение и дал ссылку. Но когда пул-реквесты сыпятся десяткам

Каждый пул-реквест хочется не просто проверить тестами, а показать вживую — дизайнеру, менеджеру, соседней команде, чтобы все они смогли потыкаться в UI, порадоваться, понаходить баги и порасстраиваться. Казалось бы, что сложного: поднял окружение и дал ссылку. Но когда пул-реквесты сыпятся десятками в день, а команд целое множество, «просто поднять окружение» превращается в отдельный инфраструктурный проект. Yandex Cloud решила эту проблему с помощью сервиса «Весёлая Ферма» и недавно выложила его код в открытый доступ. Теперь любая компания может развернуть у себя аналогичную систему и забыть о ручном поднятии тестовых стендов.
Что такое «Весёлая Ферма» и как она работает
«Весёлая Ферма» — это сервис, который автоматически создаёт preview-окружение для каждого пул-реквеста. Когда разработчик отправляет изменения в репозиторий, Ферма запускает сборку проекта, разворачивает его в изолированном контейнере и выдаёт уникальную ссылку. Эту ссылку можно отправить дизайнеру для проверки вёрстки, менеджеру для демонстрации фичи или тестировщику для поиска багов. В основе системы лежат Docker и Kubernetes, что позволяет масштабировать решение под любые нагрузки.
Изначально Ферма была простым self-hosted-скриптом, запущенным на одной виртуальной машине. Со временем она эволюционировала в полноценный оркестратор, способный обрабатывать десятки пул-реквестов в день. Ключевая особенность — интеграция с GitLab и GitHub: Ферма автоматически реагирует на события в репозитории (открытие PR, новый коммит, закрытие) и управляет жизненным циклом окружений. После мержа или закрытия пул-реквеста окружение удаляется, что экономит ресурсы.
Как автоматические preview-окружения ускоряют разработку?
Preview-окружения позволяют командам видеть изменения в реальном времени до того, как они попадут в продакшен. Это особенно важно для UI-компонент, где визуальные дефекты сложно выявить автоматическими тестами. Вместо того чтобы ждать, пока разработчик сделает скриншоты или запишет видео, заинтересованные стороны могут самостоятельно взаимодействовать с приложением. Это сокращает время обратной связи с часов до минут и снижает количество ошибок, которые доходят до пользователей.
Предыстория и контекст
Проблема preview-окружений знакома многим командам. Ручной подъём стендов отнимает время, а если пул-реквестов много, инфраструктура быстро превращается в хаос. Традиционные решения вроде Heroku Review Apps или GitLab Review Apps существуют, но они либо платные, либо привязаны к конкретному провайдеру. Yandex Cloud пошла своим путём, создав внутренний инструмент, который затем решили опенсорснуть.
Команда Yandex Cloud использует Ферму для собственных нужд уже несколько лет. За это время сервис доказал свою надёжность: он обрабатывает сотни пул-реквестов в месяц, обеспечивая быструю обратную связь между разработчиками и смежными специалистами. Открытие кода — логичный шаг, ведь многие компании сталкиваются с той же болью и могут взять готовое решение, а не изобретать велосипед.
Как это работает технически?
Ферма построена на микросервисной архитектуре. Основные компоненты: API-сервер, планировщик задач и агенты для работы с Docker. Планировщик использует Kubernetes для распределения нагрузки: каждый пул-реквест получает отдельный под с приложением. Если в проекте несколько сервисов (например, фронтенд и бэкенд), Ферма умеет поднимать их вместе, связывая через внутреннюю сеть.
Конфигурация окружений задаётся в YAML-файле внутри репозитория. Разработчик может указать, какие порты открывать, какие переменные окружения использовать и как долго держать окружение живым после последнего коммита. По умолчанию окружение живёт до закрытия PR, но можно настроить таймаут. Для аутентификации Ферма поддерживает OAuth-провайдеров, что позволяет интегрироваться с корпоративными системами.
Технические подробности и архитектура
Исходный код Фермы написан на Go и TypeScript. Бэкенд отвечает за бизнес-логику: создание, обновление и удаление окружений. Фронтенд — это React-приложение, которое показывает список активных окружений, их статус и ссылки. Для хранения состояния используется PostgreSQL, а для очередей задач — Redis. Всё это упаковано в Docker-образы и может быть развёрнуто в любом Kubernetes-кластере.
Одна из ключевых фич — возможность поднимать не только статические сайты, но и полноценные приложения с базами данных. Ферма создаёт отдельные namespace в Kubernetes для каждого окружения, что гарантирует изоляцию. Если проект использует сторонние сервисы (например, S3-совместимое хранилище), их можно замокать или поднять тестовые инстансы. Команда Yandex Cloud также добавила поддержку WebSocket и Server-Sent Events, что важно для real-time приложений.
Сравнение с конкурентами: в отличие от платных решений вроде Vercel Preview Deployments, Ферма полностью бесплатна и не привязана к облачному провайдеру. Единственное, что нужно — свой Kubernetes-кластер. По функциональности она близка к Review Apps от GitLab, но с более гибкой конфигурацией и открытым кодом.
Кого затронет и как
Новость в первую очередь интересна разработчикам, DevOps-инженерам и техническим лидам, которые хотят ускорить процесс ревью. Вместо того чтобы вручную поднимать окружения или полагаться на скриншоты, они могут дать коллегам прямую ссылку на работающий интерфейс. Это особенно полезно для распределённых команд, где дизайнеры и менеджеры находятся в разных часовых поясах.
Для бизнеса выгода очевидна: сокращение времени на проверку UI, меньше багов в продакшене и более быстрая обратная связь. Стартапы и небольшие компании могут развернуть Ферму на минимальном Kubernetes-кластере (например, из трёх нод) и получить enterprise-функционал бесплатно. Крупные организации, уже использующие Kubernetes, могут интегрировать Ферму за несколько часов.
В российском контексте это особенно актуально: многие компании ищут альтернативы зарубежным сервисам из-за санкций и блокировок. Открытый код Фермы позволяет развернуть решение на собственных серверах или в облаках российских провайдеров, не завися от внешних платформ.
Что будет дальше
Команда Yandex Cloud планирует продолжать развитие Фермы как открытого проекта. В ближайших планах — улучшение документации, добавление поддержки большего числа CI/CD-систем (пока поддерживаются GitLab и GitHub) и оптимизация производительности для больших проектов. Сообщество уже может вносить изменения через pull request'ы на GitHub.
Вероятно, Ферма станет частью экосистемы инструментов для разработки, таких как Testcontainers или LocalStack. Учитывая тренд на внутренние платформы разработчика, подобные решения будут только набирать популярность. Если проект получит достаточную поддержку сообщества, он может превратиться в стандартный компонент CI/CD-пайплайнов.
Итог
«Весёлая Ферма» от Yandex Cloud — это готовый инструмент для автоматизации preview-окружений, который теперь доступен всем желающим. Он решает реальную проблему многих команд и при этом не требует затрат на лицензии. Если вы устали вручную поднимать стенды для каждого PR, присмотритесь к этому опенсорсному решению: возможно, оно сэкономит вам часы работы и нервы.