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.