Runium от «Лаборатории Касперского»: запуск dev-окружения одной командой

Запуск локального dev-окружения в крупном проекте — это отдельный квест: несколько процессов, Docker-контейнеры, переменные окружения, порядок старта, ожидание готовности сервисов и отличия между операционными системами. Даже опытные разработчики тратят на это время и нервы, а новичкам без подробной

Runium от «Лаборатории Касперского»: запуск dev-окружения одной командой

Запуск локального dev-окружения в крупном проекте — это отдельный квест: несколько процессов, Docker-контейнеры, переменные окружения, порядок старта, ожидание готовности сервисов и отличия между операционными системами. Даже опытные разработчики тратят на это время и нервы, а новичкам без подробной инструкции не обойтись. «Лаборатория Касперского» решила эту проблему, написав собственный open-source-инструмент — Runium. Он позволяет описать dev-окружение в JSON-файле, после чего проект можно запускать, останавливать и проверять одной командой.

Runium: один файл и одна команда для запуска dev-окружения

Runium — это утилита командной строки, написанная на Rust. Её суть проста: разработчик создаёт JSON-файл с описанием окружения — какие процессы запускать, в каком порядке, какие переменные окружения установить, какие порты пробросить. Затем одной командой runium up он поднимает всё окружение, а runium down — останавливает. Инструмент сам отслеживает зависимости, ждёт готовности сервисов и корректно завершает процессы.

Проект опубликован на GitHub под лицензией MIT. На момент написания статьи доступна версия 0.1.0. Установка возможна через cargo install runium, а также через Homebrew на macOS и Linux. Для Windows пока есть ограничения: некоторые фичи, связанные с сигналами, не работают, но базовый функционал доступен.

Почему разработчикам стоит обратить внимание на Runium?

Проблема, которую решает Runium, знакома каждому разработчику, работающему над сложным проектом. Типичное dev-окружение включает базу данных, кеш, брокер сообщений, несколько микросервисов, фронтенд-сборщик. Обычно всё это запускается через docker-compose, скрипты Makefile или набор команд в терминале. Но у каждого подхода есть недостатки: docker-compose привязан к Docker, что не всегда удобно; Makefile требует поддержки и знаний; ручной запуск — источник ошибок.

Runium пошёл другим путём: он не требует Docker (хотя может запускать контейнеры), работает на уровне процессов, поддерживает параллельный и последовательный запуск, умеет проверять готовность сервисов через HTTP-запросы, TCP-соединения или выполнение произвольной команды. Это делает его гибким инструментом, подходящим для самых разных проектов.

Чем Runium отличается от docker-compose и других инструментов?

Главное отличие — Runium не привязан к контейнеризации. В то время как docker-compose требует Docker и ориентирован на контейнеры, Runium может запускать любые процессы: от Node.js-сервера до Redis, установленного напрямую. Он также умеет запускать Docker-контейнеры, но не ограничивается ими. Это особенно полезно, когда часть окружения работает нативно, а часть — в контейнерах.

Другое отличие — явное описание зависимостей и порядка запуска. В Runium вы указываете, какие процессы должны запуститься последовательно, а какие — параллельно. Для каждого процесса можно задать условие готовности: например, дождаться, пока база данных ответит на TCP-запрос на порту 5432. Это избавляет от танцев с sleep и повторными попытками.

По сравнению с Makefile Runium предлагает декларативный подход: вы описываете, что нужно запустить, а не как. JSON-файл проще поддерживать и версионировать, чем набор shell-скриптов.

Технические подробности: как устроен Runium

Runium написан на Rust, что обеспечивает высокую производительность и безопасность работы с памятью. Конфигурация хранится в JSON-файле с именем runium.json, который может располагаться в корне проекта. Структура файла включает секции processes, где каждый процесс описывается полями: command (команда для запуска), args (аргументы), env (переменные окружения), dependson (зависимости от других процессов), readycheck (проверка готовности), workdir (рабочая директория) и другие.

Пример конфигурации для веб-проекта: запуск PostgreSQL, Redis, бэкенда на Node.js и фронтенда на Vite. Для PostgreSQL указывается readycheck через TCP-подключение к порту 5432, для Redis — аналогично, для бэкенда — HTTP-запрос к localhost:3000/api/health. Runium запускает базы данных параллельно, ждёт их готовности, затем запускает бэкенд и фронтенд.

Runium также поддерживает graceful shutdown: при выполнении runium down он отправляет сигналы завершения процессам в обратном порядке зависимостей, давая им время корректно завершиться. Если процесс не завершается за таймаут, он принудительно убивается.

Кого затронет и как

Runium в первую очередь полезен разработчикам, работающим над сложными проектами с множеством зависимостей. Особенно тем, кто часто переключается между проектами или работает в команде, где каждый настраивает окружение по-своему. С Runium достаточно скопировать репозиторий и выполнить одну команду — окружение готово.

Для новичков Runium снижает порог входа: не нужно читать длинные инструкции по установке и настройке. Для опытных разработчиков — экономит время и уменьшает количество ошибок при ручном запуске. Инструмент также полезен для CI/CD: можно использовать runium для запуска интеграционных тестов, требующих поднятия окружения.

В российском контексте Runium интересен тем, что разработан «Лабораторией Касперского» и опубликован как open-source. Это даёт возможность локальным компаниям и разработчикам использовать инструмент без опасений по поводу лицензирования и санкций.

Что будет дальше

Сейчас Runium находится на ранней стадии: версия 0.1.0. Разработчики планируют добавлять новые фичи: поддержку YAML-конфигурации, интеграцию с Docker Compose, более гибкие проверки готовности, улучшенную поддержку Windows. Также ожидается, что сообщество начнёт предлагать свои улучшения и фиксы.

Вероятно, Runium не заменит полностью docker-compose или Kubernetes, но займёт свою нишу: простой и быстрый запуск dev-окружения для проектов, где не нужна полная контейнеризация. В долгосрочной перспективе инструмент может стать стандартом для небольших и средних проектов в русскоязычном сообществе разработчиков.

Итог

Runium — это свежий взгляд на старую проблему. Он предлагает простой, декларативный способ описания dev-окружения, который работает на любой ОС и не требует Docker. Для команд, уставших от громоздких инструкций и ручного запуска, это может стать настоящим спасением. Попробуйте Runium в своём следующем проекте — возможно, вы забудете о танцах с бубном при настройке окружения.