Перейти к содержанию

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

Перечень технологий, на которых построена платформа DataHUB, с фиксацией версий. Эта статья — единственная точка, где упоминаются конкретные версии компонентов; остальные архитектурные статьи опираются на возможности технологий, а не на номера релизов.

Версии

Компонент Версия Источник
Java (backend) 21 (Temurin) backend-mono/build.gradleJavaLanguageVersion.of(21), eclipse-temurin:21
Spring Boot 3.5.5 backend-mono/build.gradleorg.springframework.boot version '3.5.5'
PostgreSQL 17.6 services/postgres/DockerfileFROM postgres:17.6
Flyway 11.12 services/flyway/DockerfileFROM flyway/flyway:11.12
RabbitMQ 3-management services/rabbitmq/DockerfileFROM rabbitmq:3-management
nginx 1.27.x services/nginx/Dockerfile (параметризовано)
Node.js (frontend build & runtime) 22-slim services/frontend/DockerfileFROM node:22-slim
Next.js 16.1.6 services/frontend/package.json
React 19.2.4 services/frontend/package.json
NextAuth 5.x beta services/frontend/package.json
pgAdmin dpage/pgadmin4 (latest tag) services/postgres-admin/Dockerfile

При выпуске новой мажорной версии платформы эта таблица обновляется в одном месте; на неё ссылается раздел Релизы и инструкции по обновлению.

Backend

Spring Boot 3.5.5 / Java 21, упакован в образ registry.gitlab.com/datahub/v3/services/backend-mono. Один монолитный сервис, в котором живут оба контура (LK и Exchange — см. Архитектура сервиса). Сборка — Gradle через Jib, без локального Docker-демона.

Ключевые spring-стартеры:

  • spring-boot-starter-web — REST API.
  • spring-boot-starter-amqp — интеграция с RabbitMQ через Spring AMQP.
  • spring-boot-starter-data-jpa — работа с PostgreSQL через Hibernate.
  • spring-boot-starter-security + spring-security-oauth2-jose — авторизация на JWT.
  • spring-boot-starter-mail — отправка email.
  • spring-boot-starter-webfluxWebClient для исходящих HTTP (SMS-провайдер).
  • spring-boot-starter-actuator — healthcheck и operational endpoints.
  • spring-boot-starter-cache + caffeine — кеширование часто читаемых данных.
  • springdoc-openapi-starter-webmvc-ui — генерация OpenAPI/Swagger из аннотаций.

Дополнительные библиотеки:

  • bucket4j-spring-boot-starter — rate-limiting (на login, на API).
  • jjwt-api — выпуск и валидация JWT.
  • spring-dotenv — поддержка .env для конфигурации.

Профили Spring: dev, prod. Различия — степень логирования, доступность Swagger UI, JPA-debug. Переключение через SPRING_PROFILES_ACTIVE.

Frontend

Next.js 16.1.6 / React 19.2.4, runtime — node:22-slim. Образ registry.gitlab.com/datahub/v3/services/frontend, многостадийная сборка: первый stage компилирует, второй — поднимает production-runner.

Ключевые библиотеки:

  • next-auth ^5.0.0-beta.30 — авторизация и сессии.
  • jose, jwt-decode — работа с JWT на стороне клиента.
  • react-aria-components + tailwindcss-react-aria-components — UI-компоненты с accessibility-поддержкой.
  • react-toastify — нотификации.
  • @sentry/nextjs — мониторинг ошибок (если включён).
  • zod — валидация форм.
  • tailwindcss (v4 через postcss) — стилизация.

Frontend общается с backend'ом через REST API на lk.<domain>/api/*. Никаких прямых обращений к PostgreSQL или RabbitMQ из frontend не идёт.

PostgreSQL

PostgreSQL 17.6, базовый образ — официальный, в платформе кастомизирован под нужды DataHUB (initdb-скрипты, локаль, путь данных). Образ registry.gitlab.com/datahub/v3/services/postgres.

Хранит:

  • Метаданные обмена (системы, пакеты, маршруты, права).
  • Пользователей LK, роли, парольные истории.

Не хранит:

  • Сами сообщения обмена — они живут в RabbitMQ до подтверждения получателем, после чего удаляются.
  • Историю доставленных сообщений — централизованного лога доставки на стороне шины пока нет (запланировано).
  • Бинарные вложения (это в S3-хранилище).
  • Секреты Сервера DataHUB (это в файловой системе).

Доступ из backend — через Hikari connection pool, через JPA/Hibernate. Прямой доступ для администрирования — через pgAdmin (отдельный блок pg-agmin).

Flyway

Flyway 11.12, образ registry.gitlab.com/datahub/v3/services/flyway. Запускается одноразово (restart: "no") при первичной установке и при обновлении платформы. Применяет SQL-миграции к схеме БД и завершается.

История применённых миграций хранится в таблице flyway_schema_history той же БД. Backend никогда не модифицирует схему сам — только через миграции flyway.

RabbitMQ

RabbitMQ 3-management — ветка 3.x с включённым management plugin. Образ registry.gitlab.com/datahub/v3/services/rabbitmq.

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

  • Очередей обмена сообщениями между системами.
  • Внутренних очередей backend'а (нотификации — email, SMS).

Management UI публикуется через nginx на отдельном порту (15672). Подробнее про топологию — Работа с очередями.

nginx

nginx 1.27.x, образ registry.gitlab.com/datahub/v3/services/nginx, базируется на официальном nginx. Кастомизирован конфигами под маршрутизацию двух доменов (lk.<domain>, exchange.<domain>) и админ-портов pgAdmin/RabbitMQ Management.

Ключевые возможности из конфига:

  • TLS-терминация (включая опциональный mTLS для exchange-домена).
  • Reverse-proxy к frontend, backend, pg-admin, rabbitmq.
  • Security headers, rate-limiting на сетевом уровне, лимиты на размер тела запроса.
  • Логи доступа и ошибок в /etc/datahub/nginx/log/.

pgAdmin

dpage/pgadmin4 (актуальная стабильная версия), образ registry.gitlab.com/datahub/v3/services/postgres-admin. Опциональный блок, нужен только для административного доступа к БД через UI. В обмене не участвует.

Что дальше