Интеграционный HUB и API-связи
1) Роль и зона ответственности HUB
Интеграционный HUB (далее — HUB) — это прослойка между ядром платформы и внешним миром (провайдеры игр, PSP, KYC/AML, CRM, риск-скоринг, антифрод, BI/аналитика, уведомления). Его задачи:- унифицировать протоколы и форматы;
- обеспечить надежность (ретраи, очереди, полиси таймаутов, circuit breaker);
- гарантировать безопасность (mTLS, OAuth2, JWT, HMAC, IP-allowlist);
- централизовать наблюдаемость (логи, метрики, трассировки);
- упростить смену провайдера (адаптеры + маппинг полей);
- давать стабильные контракты для команд продукта.
2) Принципы дизайна
Консистентные контракты: единые DTO/события, строгая схема и версия.
Идемпотентность: ключи запроса, дедупликация, безопасные повторы.
Fail-safe по умолчанию: полиси таймаутов, backoff, circuit breaker.
Обсервабилити как функция: все измеримо и трассируемо.
Отделение интеграции от домена: адаптеры не «знают» бизнес-логику ядра.
Событийность: publish/subscribe для асинхронных процессов.
Версионирование: SemVer контрактов и управляемая деприкация.
3) Высокоуровневая архитектура
API Gateway: аутентификация, rate limits, канареечные релизы, WAF.
Оркестратор/Router: маршрутизация по провайдерам, приоритеты, failover, smart-routing.
Адаптеры провайдеров: REST/gRPC/GraphQL/WebSocket, маппинг полей, локальные кэши.
EDA-шина (Kafka/RabbitMQ/NATS): события «платеж создан», «KYC пройден», «игровая сессия стартовала».
Сервис контрактов/схем: Schema Registry для JSON/Avro/Protobuf.
Хранилище состояния интеграций: ключи идемпотентности, корелляция, статусы.
Наблюдаемость: Prometheus/OTel + дашборды и алерты.
DevPortal: каталоги интеграций, OpenAPI/Protobuf, примеры, песочницы.
4) Контракты данных и схемы
Строгие схемы (JSON Schema/Avro/Protobuf), обязательная валидация на входе/выходе.
Schema Registry с политикой совместимости (backward-compatible).
Четкие соглашения об ошибках (единый формат кода/деталей).
5) Поддерживаемые протоколы
REST (OpenAPI): универсально, легко документировать.
gRPC: высокопроизводительно для внутренних связей.
GraphQL: когда нужны агрегированные выборки.
Webhooks: события к внешним системам; подпись HMAC, повторная доставка.
SSE/WebSocket: стриминг лайв-событий (live-статусы, транзакции).
6) Безопасность и доступ
mTLS между внутренними сервисами.
OAuth2/OIDC для внешних клиентов, короткоживущие токены.
JWT для служебной федерации идентичностей; аудит claims.
HMAC подписи для webhooks/критически важных коллбеков.
IP-allowlist, WAF, RASP, фильтры анти-бот.
Секрет-менеджмент (KMS/HSM), ротация ключей, split-knowledge.
GDPR/PCI DSS: минимизация персональных и карточных данных, токенизация.
7) Маршрутизация и оркестрация
Policy-based routing: по гео, валюте, метрикам отказов, SLA провайдера.
Failover: последовательность PSP/провайдеров, автоматическая деградация.
Circuit Breaker: быстрые отказоустойчивые ветки при частых ошибках.
Bulkhead: изоляция по провайдерам/тенантам/пулу потоков.
Saga/оркестрация для длинных процессов (регистрация → KYC → депозит).
8) Идемпотентность и Exactly-Once (настолько, насколько реально)
Idempotency-Key + кеш статуса/ответа.
Дедупликация событий в шине (ключ корелляции).
Хранилище «seen-requests» c TTL.
http
POST /payments
Idempotency-Key: 3d8c1a4f-7f0e-4a2a-9e5a-2b8d3e7e2c11
Content-Type: application/json
json
{
"tenantId": "eu-casino-12",
"userId": "u-9812",
"currency": "EUR",
"amount": 50. 00,
"method": "card",
"metadata": {"orderId": "ORD-2025-1105-001"}
}
HUB сохранит результат и при повторах вернет тот же ответ.
9) Очереди и событийная шина
Kafka/NATS/RabbitMQ для асинхронных шагов: KYC-результаты, статусы выплат, баланс провайдера игр.
Темы с ключами партиционирования: `tenantId`, `userId` или `providerId`.
Retention и DLQ (dead-letter) с автоматическим переотправлением после фикса.
Outbox-паттерн в сервисах ядра для гарантированной публикации событий.
10) Версионирование и совместимость
SemVer на контрактах: `v1`, `v1.1`, `v2`.
Параллельное существование двух минорных версий, четкий график деприкации.
Миграционные адаптеры (временные мапперы полей) для плавного перехода.
11) Наблюдаемость и надежность
Метрики: latency p50/p95/p99, error rate, throughput, success ratio по провайдерам, время подтверждения событий, «Time-to-Wallet».
Трейсинг (OTel): сквозные `trace_id`/`span_id` от API-вызова до ответа провайдера.
Логи: структурированные, с корелляцией `request_id`, маскирование PII/PAN.
SLO: например, 99.9% успешных ответов < 1.5s для критичных путей.
Алерты: по SLO-error budget, росту DLQ, аномалиям ретраев/таймаутов.
12) Песочницы и тестовые контуры
Sandbox для каждого провайдера: фикстуры, эмуляторы ответов, версионирование данных.
Contract-testing (Pact/Buf) и автогенерация SDK.
Нагрузочные профили по сценариям «пиковые турниры», «платежные волны».
13) Категории интеграций (пример для iGaming)
Платежи/выводы: PSP, A2A/Open Banking, крипто-шлюзы.
KYC/AML/Риск: верификация личности/адреса, санкционные списки, поведенческий скоринг.
Провайдеры игр/Агрегаторы: запуск сессий, токены игры, обратные коллбеки результатов.
Коммуникации: email/SMS/push/мессенджеры.
Аналитика/BI: стриминг событий и агрегаты.
Фрод/Чарджбеки: диспут-центры, оповещения.
14) Мульти-тенантность и региональность
Изоляция по tenantId: ключи шифрования, квоты, лимиты, пулы соединений.
Гео-шардинг: маршрутизация в ближайший POP/регион, учет локальных правил.
Локализованные провайдера/методы оплаты: список по юрисдикции и KYC-уровням.
15) Производительность и кэширование
Кэш токенов (PSP/KYC), ответы метаданных провайдеров (TTL).
Connection pooling иreuse TLS-сессий.
Async I/O для высоких RPS; батчинг в адаптерах.
Rate limits на клиентском и провайдерском периметрах.
16) Сквозные сценарии (примеры)
16.1 Депозит (карта)
1. `POST /payments` (идемпотентный) → Оркестратор → PSP#1.
2. Таймаут 2с; при `5xx/timeout` — retry с backoff; при деградации — PSP#2.
3. Событие `payment.authorized` → ядро баланса → BI/антифрод.
16.2 KYC
1. `POST /kyc/submit` → адаптер провайдера KYC.
2. Ответ async: webhook `kyc.result` подписывается HMAC; при неуспехе — повторная доставка (до N раз).
3. Событие `kyc.verified` публикуется в шину.
16.3 Игровая сессия
1. `POST /games/session` → адаптер агрегатора → токен сессии.
2. Коллбеки результатов/ставок → HUB валидирует подпись и идемпотентность.
3. Событие `game.round.settled` уходит в расчет выплат и отчетность.
17) Ошибки и единый формат ответа
Коды: `INTEGRATION_TIMEOUT`, `PROVIDER_UNAVAILABLE`, `CONTRACT_VALIDATION_FAILED`, `SECURITY_SIGNATURE_INVALID`.
Тело ошибки:json
{
"code": "PROVIDER_UNAVAILABLE",
"message": "Primary PSP degraded, switched to fallback",
"correlationId": "9f8e1b6a-1c2d-4b4e-9d31-91c6bc31c1d4",
"provider": "psp-1",
"hint": "Retry allowed; idempotency key required"
}
18) Безопасные webhooks: подпись и повторы
Подписывайте каждый webhook:
X-Signature: sha256=hex(hmac_sha256(secret, body + timestamp))
X-Timestamp: 1730812800
Проверяйте drift времени и принимайте только свежие уведомления. Повторы — по экспоненте до N, затем в DLQ.
19) Управление изменениями и релизы
Канареечные адаптеры (1–5% трафика), feature flags per-tenant.
Backward-compatible релизы: сначала адаптеры, потом контракты.
CAB/CRQ для внешних провайдеров, окна деплоя согласованы по SLA.
20) SLA / SLO / OLA
SLA провайдера: аптайм ≥ 99.9%, ack webhooks ≤ 3с, финализация платежа ≤ 30с (p95).
SLO HUB: p95 < 1.5с на критичные эндпоинты, error-rate < 0.3%.
OLA внутри: лимиты на очереди, бюджет ретраев, максимальные DLQ-времена.
21) Каталог интеграций и DevPortal
Страницы провайдеров: статусы, версии адаптеров, требования к полям, чек-листы.
Автоген SDK (OpenAPI/gRPC), примеры, коллекции Postman, mock-серверы.
Кнопка “Test in Sandbox” и интеграционные пайплайны CI.
22) Безопасность и комплаенс
PII-редакция в логах, шифрование полей at-rest, поля PAN только в токенизированном виде.
RBAC/ABAC для операторских панелей, принцип наименьших привилегий.
Регистры согласий (GDPR), право на удаление/портирование.
Вендор-риск и DPIA для новых интеграций.
23) План внедрения (MVP → Scale)
MVP (0–2 мес.): Gateway, 1–2 PSP, 1 KYC, 1 агрегатор игр, базовые метрики, идемпотентность, DLQ.
Phase 2 (3–4 мес.): EDA-шина, DevPortal, контракт-тесты, fallback-маршрутизация, webhooks-подпись.
Phase 3 (5–6 мес.): кластера с гео-ролловером, smart-routing по SLA, расширенные SLO/алерты, автоген SDK, canary.
24) Чек-лист перед продом
Контракты в Registry, тесты совместимости пройдены.
Полиси таймаутов/ретраев/брейкеров заданы и покрыты е2е-тестами.
IdempotencyKey включен в критичные POST/PUT.
Подписи webhooks проверены, повторы конфигурированы, DLQ мониторится.
Метрики p95/p99 и error-rate соответствуют SLO, алерты подключены.
Секреты в KMS, ротация проверена; IP-allowlist/WAF активны.
Runbooks/плейбуки инцидентов опубликованы, on-call расписан.
DevPortal и песочницы доступны партнерам, версии задокументированы.
Краткий вывод
Интеграционный HUB — это промышленный «щит и переводчик» между вашим ядром и миром внешних сервисов. Его сила — в строгих контрактах, идемпотентности, событийной шине, управляемом версионировании и наблюдаемости. Такая архитектура ускоряет онбординг провайдеров, снижает риски, дает предсказуемые SLO и упрощает масштабирование под пики трафика и выход на новые рынки.