Skip to content

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

FlowCraft построен на основе современной микросервисной архитектуры, обеспечивающей высокую производительность, масштабируемость и гибкость. В этом документе описаны основные компоненты системы, их взаимодействие и технический стек.

Общая архитектура

Архитектура FlowCraft состоит из следующих основных компонентов:

  1. Фронтенд - пользовательский интерфейс для создания и управления рабочими процессами
  2. API слой - REST API для взаимодействия с системой
  3. Ядро исполнения - движок для выполнения рабочих процессов
  4. Система хранения данных - хранение рабочих процессов, учетных данных и результатов выполнения
  5. Система аутентификации и авторизации - управление пользователями и доступом
  6. Система интеграций - коннекторы к внешним сервисам и API
  7. Система плагинов - механизм расширения функциональности
  8. Система очередей - асинхронная обработка задач
  9. Система мониторинга - отслеживание производительности и ошибок

Технический стек

Бэкенд

  • Язык программирования: Python 3.10+
  • Веб-фреймворк: FastAPI
  • ORM: SQLAlchemy
  • Миграции: Alembic
  • Асинхронная обработка: Celery
  • Брокер сообщений: Redis
  • Кэширование: Redis
  • Валидация данных: Pydantic
  • Аутентификация: JWT, OAuth2
  • Документация API: OpenAPI (Swagger)

Фронтенд

  • Язык программирования: TypeScript
  • Фреймворк: React
  • Управление состоянием: Redux Toolkit
  • Маршрутизация: React Router
  • UI компоненты: Custom components with styled-components
  • Визуализация графов: React Flow
  • Формы: React Hook Form
  • HTTP клиент: Axios
  • Тестирование: Jest, React Testing Library

База данных

  • Основная БД: PostgreSQL
  • Кэш и очереди: Redis
  • Хранение файлов: MinIO (S3-compatible)

Инфраструктура

  • Контейнеризация: Docker
  • Оркестрация: Kubernetes (опционально)
  • CI/CD: GitHub Actions
  • Мониторинг: Prometheus, Grafana
  • Логирование: ELK Stack (Elasticsearch, Logstash, Kibana)
  • Трассировка: Jaeger

Детальная архитектура компонентов

Фронтенд

Фронтенд FlowCraft представляет собой одностраничное приложение (SPA), разработанное с использованием React и TypeScript. Архитектура фронтенда основана на компонентном подходе с четким разделением ответственности.

Основные модули фронтенда:

  1. Редактор рабочих процессов

    • Визуальный конструктор потоков
    • Панель узлов и интеграций
    • Панель свойств узлов
    • Инструменты отладки
  2. Панель управления

    • Список рабочих процессов
    • Мониторинг выполнения
    • Статистика и аналитика
    • Управление учетными данными
  3. Система аутентификации

    • Регистрация и вход
    • Управление профилем
    • Управление командами и организациями
  4. Система настроек

    • Настройки пользователя
    • Настройки организации
    • Настройки системы

Архитектура состояния:

Управление состоянием реализовано с использованием Redux Toolkit, который обеспечивает предсказуемое управление состоянием с типизацией TypeScript. Состояние разделено на слайсы, соответствующие различным доменам приложения:

  • auth: состояние аутентификации и пользовательские данные
  • workflows: рабочие процессы и их метаданные
  • editor: состояние редактора рабочих процессов
  • executions: выполнения рабочих процессов и их результаты
  • credentials: учетные данные для интеграций
  • ui: состояние пользовательского интерфейса (модальные окна, уведомления и т.д.)

API слой

API слой построен на FastAPI и предоставляет RESTful интерфейс для взаимодействия с системой. API разделено на несколько групп эндпоинтов:

  1. Аутентификация и пользователи

    • Регистрация и вход
    • Управление пользователями
    • Управление ролями и разрешениями
  2. Рабочие процессы

    • CRUD операции для рабочих процессов
    • Активация/деактивация рабочих процессов
    • Экспорт/импорт рабочих процессов
  3. Выполнения

    • Запуск рабочих процессов
    • Получение результатов выполнения
    • Отмена выполнения
  4. Учетные данные

    • Управление учетными данными для интеграций
    • Тестирование подключений
  5. Интеграции

    • Получение списка доступных интеграций
    • Получение метаданных интеграций
  6. Система

    • Мониторинг состояния системы
    • Управление настройками
    • Управление плагинами

Ядро исполнения

Ядро исполнения отвечает за выполнение рабочих процессов и является центральным компонентом системы. Оно состоит из следующих подсистем:

  1. Менеджер рабочих процессов

    • Загрузка и валидация рабочих процессов
    • Управление жизненным циклом рабочих процессов
    • Активация и деактивация рабочих процессов
  2. Движок выполнения

    • Построение графа выполнения
    • Планирование и выполнение узлов
    • Обработка ошибок и повторные попытки
    • Параллельное выполнение
  3. Система триггеров

    • Обработка входящих событий
    • Планирование выполнения по расписанию
    • Опрос внешних систем
  4. Менеджер контекста

    • Управление контекстом выполнения
    • Передача данных между узлами
    • Управление переменными рабочего процесса
  5. Система выражений

    • Парсинг и выполнение выражений
    • Поддержка JSONPath и шаблонов
    • Выполнение пользовательского кода

Система хранения данных

Система хранения данных отвечает за персистентность всех данных в системе. Основным хранилищем является PostgreSQL, который используется для хранения:

  1. Рабочих процессов

    • Метаданные рабочих процессов
    • Конфигурация узлов
    • Связи между узлами
  2. Выполнений

    • Метаданные выполнений
    • Результаты выполнения узлов
    • Журналы выполнения
  3. Учетных данных

    • Зашифрованные учетные данные для интеграций
    • Метаданные учетных данных
  4. Пользователей и разрешений

    • Данные пользователей
    • Роли и разрешения
    • Команды и организации

Redis используется для:

  • Кэширования часто используемых данных
  • Хранения сессий
  • Реализации очередей задач
  • Хранения временных данных

MinIO (или другое S3-совместимое хранилище) используется для:

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

Система аутентификации и авторизации

Система аутентификации и авторизации обеспечивает безопасный доступ к системе и управление разрешениями. Она включает:

  1. Аутентификация

    • Локальная аутентификация (логин/пароль)
    • OAuth2 интеграции (Google, GitHub, и т.д.)
    • LDAP/Active Directory интеграция
    • Многофакторная аутентификация
  2. Управление пользователями

    • Регистрация и активация пользователей
    • Управление профилями
    • Сброс пароля
  3. Управление разрешениями

    • Ролевая модель доступа (RBAC)
    • Детальные разрешения на уровне ресурсов
    • Управление командами и организациями
  4. Аудит

    • Журналирование действий пользователей
    • Отслеживание изменений
    • Уведомления о подозрительной активности

Система интеграций

Система интеграций предоставляет унифицированный интерфейс для взаимодействия с внешними сервисами и API. Она состоит из:

  1. Коннекторы

    • Реализация протоколов взаимодействия (REST, SOAP, GraphQL, и т.д.)
    • Аутентификация в внешних системах
    • Обработка ошибок и повторные попытки
  2. Адаптеры

    • Преобразование данных между форматами
    • Маппинг полей
    • Валидация данных
  3. Менеджер учетных данных

    • Безопасное хранение учетных данных
    • Управление токенами и сессиями
    • Обновление токенов
  4. Кэширование

    • Кэширование результатов запросов
    • Управление квотами и ограничениями
    • Оптимизация производительности

Система плагинов

Система плагинов обеспечивает расширяемость платформы и позволяет добавлять новую функциональность без изменения основного кода. Она включает:

  1. Менеджер плагинов

    • Загрузка и инициализация плагинов
    • Управление жизненным циклом плагинов
    • Разрешение зависимостей
  2. API плагинов

    • Интерфейсы для создания новых типов узлов
    • Интерфейсы для создания новых триггеров
    • Интерфейсы для расширения функциональности системы
  3. Песочница

    • Изоляция выполнения пользовательского кода
    • Ограничение ресурсов
    • Безопасное выполнение
  4. Маркетплейс

    • Публикация и распространение плагинов
    • Управление версиями
    • Рейтинги и отзывы

Система очередей

Система очередей обеспечивает асинхронную обработку задач и масштабируемость системы. Она построена на основе Celery и Redis и включает:

  1. Брокер сообщений

    • Очереди задач
    • Маршрутизация сообщений
    • Гарантированная доставка
  2. Воркеры

    • Обработка задач
    • Масштабирование и балансировка нагрузки
    • Обработка ошибок
  3. Планировщик

    • Выполнение задач по расписанию
    • Периодические задачи
    • Отложенное выполнение
  4. Мониторинг

    • Отслеживание состояния очередей
    • Статистика выполнения
    • Алерты при проблемах

Система мониторинга

Система мониторинга отвечает за отслеживание производительности и состояния системы. Она включает:

  1. Сбор метрик

    • Системные метрики (CPU, память, диск)
    • Метрики приложения (запросы, ошибки, латентность)
    • Метрики бизнес-процессов (выполнения, успешность)
  2. Логирование

    • Централизованный сбор логов
    • Структурированное логирование
    • Поиск и анализ логов
  3. Трассировка

    • Распределенная трассировка запросов
    • Анализ производительности
    • Выявление узких мест
  4. Алерты

    • Настраиваемые правила алертов
    • Уведомления по различным каналам
    • Эскалация проблем

Взаимодействие компонентов

Процесс создания и выполнения рабочего процесса

  1. Пользователь создает рабочий процесс через фронтенд, перетаскивая узлы и настраивая их параметры.
  2. Фронтенд отправляет конфигурацию рабочего процесса на API сервер.
  3. API сервер валидирует конфигурацию и сохраняет ее в базе данных.
  4. Пользователь активирует рабочий процесс.
  5. Система триггеров начинает отслеживать события, которые могут запустить рабочий процесс.
  6. При возникновении события триггер создает задачу в очереди для выполнения рабочего процесса.
  7. Воркер получает задачу и запускает движок выполнения.
  8. Движок выполнения загружает конфигурацию рабочего процесса и строит граф выполнения.
  9. Движок последовательно выполняет узлы графа, передавая данные между ними.
  10. Результаты выполнения сохраняются в базе данных.
  11. Пользователь может просмотреть результаты выполнения через фронтенд.

Процесс интеграции с внешними сервисами

  1. Пользователь добавляет учетные данные для внешнего сервиса через фронтенд.
  2. Фронтенд отправляет зашифрованные учетные данные на API сервер.
  3. API сервер сохраняет зашифрованные учетные данные в базе данных.
  4. Пользователь добавляет узел, использующий эти учетные данные, в рабочий процесс.
  5. При выполнении рабочего процесса движок выполнения загружает учетные данные из базы данных.
  6. Система интеграций использует учетные данные для аутентификации в внешнем сервисе.
  7. Система интеграций отправляет запрос к внешнему сервису и получает ответ.
  8. Ответ преобразуется в формат, понятный движку выполнения, и передается дальше по графу.

Масштабирование

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

Масштабирование API серверов

API серверы являются stateless и могут быть масштабированы горизонтально путем добавления новых экземпляров за балансировщиком нагрузки.

Масштабирование воркеров

Воркеры Celery могут быть масштабированы горизонтально путем добавления новых экземпляров. Они могут быть специализированы для обработки определенных типов задач или общего назначения.

Масштабирование базы данных

PostgreSQL может быть масштабирован с использованием репликации для чтения и шардирования для записи. Для высоконагруженных систем может быть реализована стратегия CQRS (Command Query Responsibility Segregation).

Масштабирование Redis

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

Отказоустойчивость

FlowCraft спроектирован с учетом обеспечения высокой доступности и отказоустойчивости.

Высокая доступность компонентов

  • API серверы: несколько экземпляров за балансировщиком нагрузки
  • Воркеры: автоматическое перезапуск при сбоях, повторные попытки выполнения задач
  • База данных: репликация, автоматическое переключение при сбоях
  • Redis: кластеризация и репликация

Обработка ошибок

  • Повторные попытки: автоматические повторные попытки при временных сбоях
  • Деградация функциональности: продолжение работы с ограниченной функциональностью при недоступности некоторых компонентов
  • Circuit breaker: предотвращение каскадных сбоев при проблемах с внешними сервисами

Резервное копирование и восстановление

  • Регулярные резервные копии: автоматическое создание резервных копий базы данных и конфигурации
  • Point-in-time recovery: возможность восстановления на определенный момент времени
  • Географическое резервирование: хранение резервных копий в разных географических регионах

Безопасность

FlowCraft уделяет особое внимание безопасности данных и защите от различных угроз.

Защита данных

  • Шифрование в покое: шифрование чувствительных данных в базе данных
  • Шифрование в пути: использование TLS для всех коммуникаций
  • Управление ключами: безопасное хранение и ротация ключей шифрования

Аутентификация и авторизация

  • Многофакторная аутентификация: дополнительный уровень защиты
  • Детальное управление доступом: контроль доступа на уровне ресурсов
  • Аудит действий: отслеживание всех действий пользователей

Защита от атак

  • CSRF защита: предотвращение Cross-Site Request Forgery
  • XSS защита: предотвращение Cross-Site Scripting
  • Rate limiting: защита от DDoS и брутфорс атак
  • Input validation: валидация всех входных данных

Заключение

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

Выпущено под лицензией MIT.