Технологический стек
На этой странице собран полный перечень технологий, библиотек и инструментов, используемых в проекте 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 |