RuleGo - Оркестровка бизнес-логики без головной боли

24 авг 2025
1,586
155
21
2 недели

Представьте ситуацию: вы разрабатываете IoT-платформу, где нужно обрабатывать потоки данных с тысяч устройств, применять к ним сложные правила и интегрировать с десятком внешних систем. Бизнес-логика постоянно меняется, а перезапускать продакшен-серверы каждый раз — не вариант. Знакомая картина? Именно для таких сценариев создан RuleGo.

Что такое RuleGo?

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

Основные преимущества:

  • Легковесность: всего ~19 МБ памяти даже на Raspberry Pi
  • Гибкость: бизнес-логика описывается в виде цепочек правил
  • Динамичность: можно менять логику на лету
  • Компонентность: сотни готовых блоков для любых задач

Архитектура RuleGo

Топ-5 причин попробовать RuleGo

  1. Горячая замена правил Больше не нужно останавливать сервис для обновления бизнес-логики. Просто загрузите новую конфигурацию цепочки правил — изменения применятся моментально.

    Реклама
  2. Готовые компоненты для всего От отправки email до интеграции с ChatGPT — сотни компонентов уже ждут вас. Нужен кастомный обработчик? Легко написать свой!

  3. Работает даже на Raspberry Pi Благодаря эффективной реализации на Go, RuleGo отлично чувствует себя на edge-устройствах с ограниченными ресурсами.

  4. Визуальный редактор Компания предлагает RuleGo-Editor — удобный инструмент для построения цепочек правил через интерфейс.

  5. Поддержка всех популярных протоколов MQTT, HTTP, Kafka, WebSocket — RuleGo умеет работать со всеми основными способами передачи данных.

Как это работает?

Базовый пример использования выглядит так:

// 1. Загружаем цепочку правил из JSON
ruleFile := fs.LoadFile("chain_call_rest_api.json")

// 2. Создаем экземпляр движка
ruleEngine, err := rulego.New("rule01", ruleFile)

// 3. Отправляем сообщение на обработку
msg := types.NewMsg(0, "TELEMETRY_MSG", types.JSON, metaData, "{\"temperature\":35}")
ruleEngine.OnMsg(msg)

А вот так выглядит сама цепочка правил в JSON:

{
  "ruleChain": {
    "name": "Температурный мониторинг",
    "nodes": [
      {
        "id": "filter",
        "type": "jsFilter",
        "config": {"jsScript": "return msg.temperature > 30;"}
      },
      {
        "id": "alert",
        "type": "email",
        "config": {"to": "admin@example.com", "subject": "Перегрев!"}
      }
    ]
  }
}

Где это применить?

  • IoT и edge computing: предобработка данных прямо на устройстве перед отправкой в облако
  • Автоматизация бизнес-процессов: оркестрация микросервисов и внешних API
  • Интеграция систем: «склейка» разнородных систем через общий движок правил
  • ETL-задачи: трансформация и маршрутизация данных между хранилищами

Экосистема

Помимо ядра, проект предлагает целый набор дополнительных инструментов:

RuleGo — отличный выбор, если вам нужно:

  • Быстро реагировать на изменения бизнес-требований
  • Обрабатывать сложные потоки данных с минимальными задержками
  • Интегрировать разнородные системы без написания тонн кода
  • Работать в условиях ограниченных ресурсов (IoT, edge-устройства)

Проект активно развивается, имеет хорошую документацию на английском и китайском, а также растущее комьюнити. Для Go-разработчиков, работающих с IoT или сложной бизнес-логикой, это must-have инструмент в арсенале.

Попробуйте и убедитесь сами — возможно, это именно то решение, которое вы так долго искали!

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.