Компоненты системы
Перечень технологий, на которых построена платформа DataHUB, с фиксацией версий. Эта статья — единственная точка, где упоминаются конкретные версии компонентов; остальные архитектурные статьи опираются на возможности технологий, а не на номера релизов.
Версии
| Компонент | Версия | Источник |
|---|---|---|
| Java (backend) | 21 (Temurin) | backend-mono/build.gradle — JavaLanguageVersion.of(21), eclipse-temurin:21 |
| Spring Boot | 3.5.5 | backend-mono/build.gradle — org.springframework.boot version '3.5.5' |
| PostgreSQL | 17.6 | services/postgres/Dockerfile — FROM postgres:17.6 |
| Flyway | 11.12 | services/flyway/Dockerfile — FROM flyway/flyway:11.12 |
| RabbitMQ | 3-management | services/rabbitmq/Dockerfile — FROM rabbitmq:3-management |
| nginx | 1.27.x | services/nginx/Dockerfile (параметризовано) |
| Node.js (frontend build & runtime) | 22-slim | services/frontend/Dockerfile — FROM 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-webflux—WebClientдля исходящих 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. В обмене не участвует.
Что дальше
- Общая схема платформы — как эти компоненты соединены между собой.
- Архитектура сервиса — внутреннее устройство Spring Boot-приложения.
- Развертывание / Архитектура развертывания — операционный взгляд: блоки docker-compose, сеть, порядок запуска.
- Релизы / История версий — как версии компонентов меняются по релизам платформы.