Документация

Техническая архитектура DoXML

Данный документ описывает техническую архитектуру программного комплекса DoXML.

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

DoXML построен как набор взаимодействующих сервисов:

┌─────────────────────────────────────────────────────────────┐
│                         Клиент (браузер)                      │
└─────────────────────────────┬───────────────────────────────┘
                              │ HTTPS
┌─────────────────────────────▼───────────────────────────────┐
│                      Traefik (обратный прокси-сервер)       │
│              SSL/TLS, маршрутизация, ограничение частоты      │
└──────────────┬──────────────────────────────┬───────────────┘
               │                              │
    ┌──────────▼──────────┐        ┌──────────▼──────────┐
    │  Клиентское         │        │  Панель управления  │
    │  приложение         │        │  организации        │
    │    React/Vite       │        │    React/Vite       │
    └──────────┬──────────┘        └──────────┬──────────┘
               │                              │
               └──────────────┬───────────────┘
                              │ /api/v1
┌─────────────────────────────▼───────────────────────────────┐
│              Сервер приложений (Spring Boot 4)                │
│  REST API, бизнес-логика, валидация, XML-генерация, OCR     │
└──────────────┬──────────────────────────────┬───────────────┘
               │                              │
    ┌──────────▼──────────┐        ┌──────────▼──────────┐
    │  Сервис             │        │  Сервис             │
    │  лицензирования     │        │  распознавания      │
    │  (Spring Boot 4)    │        │  текста             │
    └──────────┬──────────┘        └─────────────────────┘
               │
┌──────────────┼──────────────────────────────────────────────┐
│              Инфраструктурные сервисы                       │
│  PostgreSQL │ Redis │ Apache Ozone │ Панель управления Traefik│
└───────────────────────────────────────────────────────────────┘

Компоненты системы

1. Клиентское приложение

Технологии: React 18, Vite 5, TypeScript, TanStack Form, TanStack Query, Zustand, Tailwind CSS, Radix UI, Gravity UI.

Назначение:

  • Рабочее место пользователя.
  • Список проектов и документов.
  • Редактор форм документов на базе @doxml/document-form-view.
  • Экспорт, валидация, shared folders, профиль.

2. Панель управления организации

Технологии: React 18, Vite 5, TypeScript.

Назначение:

  • Панель администратора организации.
  • Управление пользователями, проектами, документами.
  • Настройки организации, лицензии, типы документов, новости.
  • Статистика.

3. Сервер приложений

Технологии: Java 25, Spring Boot 4, Maven, PostgreSQL, Redis, JPA/Hibernate.

Назначение:

  • Обработка бизнес-логики.
  • REST API с префиксом /api/v1.
  • Аутентификация и авторизация (JWT, CSRF).
  • Управление проектами, документами, пользователями.
  • Валидация XML по XSD, генерация XML/PDF/DOCX/HTML.
  • Интеграция с OCR, справочниками, платёжными системами.

4. License Service

Технологии: Java 25, Spring Boot 4 (тот же артефакт в режиме license).

Назначение:

  • Проверка подписи лицензионных ключей.
  • Управление лицензионными правами.
  • Лицензионный lock/unlock продукта.

5. PostgreSQL

Назначение:

  • Основная реляционная база данных.
  • Пользователи, организации, аккаунты, проекты, документы.
  • Хранение formData документов в JSONB.
  • Хранение метаданных файлов и папок.

6. Redis

Назначение:

  • Кэширование часто запрашиваемых данных.
  • Хранение сессий/refresh-токенов.
  • Rate limiting (Bucket4j).
  • Очереди и временные данные.

7. Apache Ozone

Назначение:

  • S3-совместимое объектное хранилище.
  • Хранение файлов документов, изображений, приложений.
  • Интеграция с сервером приложений через API протокола S3.

8. OCR Service

Назначение:

  • Распознавание текста в загруженных документах.
  • Поддержка русского и английского языков.
  • Асинхронная обработка через HTTP API.

9. Traefik

Назначение:

  • Обратный прокси-сервер и балансировка.
  • SSL-терминация (Let's Encrypt).
  • Маршрутизация запросов на сервисы по Host/Path.

Схема взаимодействия

Клиент
  │ HTTPS
  ▼
Traefik
  │
  ├─→ Клиентское приложение / панель управления организации (React)
  │     │
  │     ▼ /api/v1
  ├─→ Сервер приложений (Spring Boot)
  │     │
  │     ├─→ PostgreSQL
  │     ├─→ Redis
  │     ├─→ Apache Ozone
  │     └─→ Сервис распознавания текста
  │
  └─→ Сервис лицензирования (Spring Boot) → PostgreSQL

Слои приложения

Уровень представления

  • Клиентское приложение — рабочее место пользователя.
  • Панель управления организации — администрирование организации.

Уровень приложения

  • REST Controllers.
  • Security (JWT, CSRF, rate limiting).
  • Сервисы бизнес-логики.
  • DocumentFormView runtime (shared package).

Уровень данных

  • PostgreSQL — структурированные данные + JSONB.
  • Redis — кэш, сессии, rate limiting.
  • Ozone — файлы и объекты.

Архитектурные паттерны

1. Микросервисная архитектура

  • Backend, License Service, OCR Service — отдельные контейнеры.
  • Клиентское приложение и панель управления организации — отдельные сборки.
  • Каждый сервис масштабируется независимо.

2. API-First

  • Backend предоставляет RESTful API.
  • Frontend взаимодействует только через API.
  • Контракты API в camelCase.

3. Разделение ответственности

  • Frontend — отображение и взаимодействие.
  • Backend — бизнес-логика и persist.
  • License Service — лицензирование.

4. Контейнеризация

  • Все компоненты упакованы в Docker.
  • Оркестрация через Docker Compose.
  • Изоляция зависимостей и единообразное развёртывание.

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

  • HTTPS/TLS на всех внешних соединениях.
  • JWT-аутентификация с refresh-токенами.
  • CSRF-защита для изменяющих запросов.
  • Rate limiting по IP и endpoint.
  • Изоляция сети Docker.
  • Проверка лицензий.
  • Хранение паролей в хешированном виде.

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

Вертикальное

Увеличение ресурсов сервера: CPU, RAM, диск.

Горизонтальное

  • Несколько экземпляров сервера приложений за балансировщиком.
  • Репликация PostgreSQL (read replicas).
  • Redis Cluster.
  • Распределённое хранилище Ozone.

Мониторинг и логирование

  • Spring Boot Actuator: health, metrics, Prometheus.
  • Docker logs.
  • Метрики PostgreSQL и Redis.
  • Алерты по CPU, RAM, диску, ошибкам.

Резервное копирование

  • Дампы PostgreSQL.
  • Резервная копия объектного хранилища Ozone.
  • Каталог license/ с ключами.

Заключение

Архитектура DoXML основана на современных принципах: микросервисы, контейнеризация, API-First, безопасность на всех уровнях. Это обеспечивает масштабируемость, независимое обновление компонентов и высокую доступность.

Версия документа: 2.0
Дата обновления: 2026