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

Технологический стек

На этой странице собран полный перечень технологий, библиотек и инструментов, используемых в проекте Univex. Стек разделён по функциональным категориям для удобства навигации.


Обзор стека

Категория Технологии
Язык / Рантайм Go 1.25 (Exchange Engine), Go 1.23.2 (Univex Monorepo)
Web-фреймворки Fiber v2 (gateway, admin-gateway, sumsub-integration), Echo (Exchange HTTP API), Melody (WebSocket)
RPC / Коммуникация gRPC, Protobuf, HTTP REST, gRPC Streaming
RBAC / Авторизация Casbin (admin-gateway), JWT
База данных PostgreSQL (10 БД), PgBouncer, Bun ORM, pgx, Goose (миграции)
Кэш / Очереди Redis (Valkey), AWS SQS, AWS SNS
Блокчейн Bitcoin (BTC), Ethereum (ETH), TRON
KYC / AML Sumsub (KYC/KYB), Elliptic (AML)
Наблюдаемость Prometheus, OpenTelemetry, Zap
Workflow / Оркестрация Temporal.io
Инфраструктура Kubernetes, Docker, S3-совместимое хранилище, AWS SQS/SNS

Детальное описание

Язык / Рантайм

Компонент Версия Назначение
Go 1.25 Exchange Engine
Go 1.23.2 Univex Monorepo

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


Web-фреймворки

Библиотека Где используется Назначение
Fiber v2 gateway, admin-gateway, sumsub-integration Высокопроизводительный HTTP-фреймворк на основе fasthttp. Маршрутизация, middleware, обработка входящих запросов
Echo Exchange Engine (api) HTTP REST API — маршрутизация, middleware, валидация запросов. Публичный торговый API (/api/v1/)
Melody Exchange Engine WebSocket-сервер для трансляции обновлений в реальном времени (котировки, стакан, сделки)

Fiber v2 используется во всех HTTP-шлюзах монорепозитория благодаря высокой пропускной способности и минимальным накладным расходам. Echo остаётся основным фреймворком публичного торгового API в Exchange Engine.


RPC / Коммуникация

Технология Назначение
gRPC Межсервисное взаимодействие: gateway / admin-gateway → univex-id / ledger / p2p / trades-aggregator / exchange-integration
gRPC Streaming Потоковая передача данных в trades-aggregator (серверный стриминг)
Protobuf Схемы сообщений и контракты всех gRPC-сервисов
HTTP REST Публичный API Exchange Engine (/api/v1/) и HTTP-шлюзы монорепозитория
WebSocket Стриминг данных в реальном времени на фронтенд (Exchange Engine / Melody)

gRPC выбран для внутренних вызовов между сервисами за счёт строгой типизации контрактов (Protobuf), бинарного протокола и поддержки стриминга. HTTP REST остаётся стандартным интерфейсом для внешних потребителей API.


RBAC / Авторизация

Компонент Назначение
Casbin Ролевое управление доступом в admin-gateway. Политики RBAC для разграничения прав между операторами административной панели
JWT Аутентификация запросов на уровне шлюзов

Casbin интегрирован в admin-gateway для гибкого управления доступом к административным маршрутам: аккаунты, блокчейн, AML, p2p-споры, управление администраторами и другие чувствительные операции.


База данных

Компонент Назначение
PostgreSQL Основная реляционная база данных. 10 отдельных баз: по одной на каждый stateful-сервис монорепозитория + Exchange Engine
PgBouncer Пулинг соединений с PostgreSQL для снижения нагрузки при большом числе сервисов
Bun ORM ORM-слой поверх pgx: построение запросов, связи, работа с моделями
pgx Низкоуровневый PostgreSQL-драйвер для Go — пул соединений, подготовленные запросы
Goose Управление миграциями схемы. univex-id: 48 миграций; p2p: 31 миграция; ledger: 11 миграций

10 баз данных развёрнуты за PgBouncer, что позволяет каждому сервису иметь изолированную схему при сохранении контроля над общим числом соединений с PostgreSQL.


Кэш / Очереди

Компонент Назначение
Redis (Valkey) Redis-совместимое хранилище данных в памяти — кэширование, сессии, pub/sub, временные токены. Используется в univex-id
AWS SQS Управляемые очереди сообщений для асинхронной доставки событий. Используется в email и sms-gate
AWS SNS Managed pub/sub для SMS-рассылок. Основной канал в sms-gate (с Telegram как fallback)

AWS SNS добавлен в sms-gate как основной провайдер SMS. При недоступности SNS используется Telegram в качестве резервного канала доставки.


Блокчейн

Сеть Тикер Интеграция
Bitcoin BTC Нативная интеграция в Exchange Engine: hotmanager-btc, topupscan-btc, txprocessor-btc
Ethereum ETH Нативная интеграция в Exchange Engine: hotmanager-evm, topupscan-evm, txprocessor-evm
TRON TRX / TRC-20 Нативная интеграция в Exchange Engine: hotmanager-tron, topupscan-tron, txprocessor-tron

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


KYC / AML

Провайдер Сервис Назначение
Sumsub sumsub-integration KYC/KYB-верификация: получение токена доступа, данных заявителя, изображений документов. Обработка webhook при достижении терминального статуса верификации
Elliptic Exchange Engine (elliptic_check) AML-мониторинг: скоринг транзакций и адресов блокчейна на предмет подозрительной активности

sumsub-integration реализован как отдельный gRPC-сервис с Fiber-обработчиком webhook. elliptic_check входит в состав topupscan в Exchange Engine и запускается как фоновый процесс.


Наблюдаемость

Инструмент Назначение
Prometheus Сбор метрик: latency, throughput, ошибки, состояние очередей, бизнес-метрики
OpenTelemetry Распределённая трассировка запросов через границы сервисов
Zap Высокопроизводительное структурированное логирование (JSON)

Все три инструмента применяются совместно: Zap — для операционных логов, Prometheus — для метрик и алертов, OpenTelemetry — для трассировки конкретных запросов от входа в систему до ответа.


Workflow / Оркестрация

Инструмент Сервисы Назначение
Temporal.io univex-id, ledger, p2p Оркестрация долгосрочных бизнес-процессов: KYC-верификация, обработка платежей, p2p-ордера

Temporal.io используется в трёх сервисах монорепозитория. Каждый сервис содержит собственных Temporal-воркеров с изолированными task queue. Это обеспечивает гарантированное выполнение финансовых операций и автоматические повторные попытки при сбоях.


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

Технология Назначение
Docker Контейнеризация всех сервисов
Kubernetes Оркестрация контейнеров в продакшене: деплой, масштабирование, service discovery
Temporal.io Оркестрация долгосрочных бизнес-процессов (univex-id, ledger, p2p)
S3-совместимое хранилище Объектное хранилище — документы KYC, экспорт данных, зашифрованные бэкапы ключей
AWS SQS Managed-очереди для асинхронной обработки событий (email, sms-gate)
AWS SNS Managed pub/sub для SMS (sms-gate)

Версии Go

Репозиторий Go Version
Exchange Engine 1.25
Univex Monorepo 1.23.2