Все кейсы
Финтех · Highload

Процессинг и антифрод для банка

«Меридиан» — розничный банк. Его процессинг считал балансы «на лету» и плыл после правок справочников, антифрод жил на ручных правилах, а пики в зарплатные дни клали систему. Мы собрали транзакционное ядро на неизменяемом реестре операций: баланс — это проекция фактов, платежи идемпотентны, антифрод работает на потоке, а кластер держит пик в active-active.

1 200
транзакций/с в пике
99.99%
доступность
Транзакцииlive
₽ 12 400ОК
₽ 980Фрод
₽ 5 600ОК
Антифрод1 240 TPS

Задача

Легаси-процессинг хранил изменяемые балансы и пересчитывал их на лету. После правок справочников и ручных корректировок суммы «плыли», а сверка занимала дни.

Антифрод работал на статичных правилах и срабатывал постфактум. В зарплатные дни и распродажи нагрузка росла в разы, а система масштабировалась только вертикально — упиралась в потолок и падала ночью.

Решение

Перешли на event sourcing: каждая операция — неизменяемый факт в реестре, а баланс считается как проекция этих фактов. Историю нельзя переписать, сверка мгновенная и всегда сходится. Платежи идемпотентны по ключу — повтор запроса не создаёт двойного списания.

Антифрод вынесли на потоковую обработку: правила и скоринг на каждой транзакции в реальном времени, подозрительные уходят на удержание или блок. Бухгалтерская двойная запись, аудит каждого действия, ролевой доступ и принцип «4 глаз» на критичных операциях.

Ядро — stateless-сервисы за шиной событий, active-active в двух зонах с авто-переключением и горизонтальным масштабированием под пик. Интеграции с СБП и НСПК с идемпотентными ретраями, наблюдаемость с первого дня.

Результат

Ноль расхождений в балансах после правок, сверка — секунды вместо дней. Антифрод режет мошеннические операции на лету. Кластер держит пик в зарплатные дни без деградации отклика.

Банк получил процессинг, которому можно доверять цифры, и платформу, которая масштабируется горизонтально, а не «упирается в сервер».

Что внутри

Неизменяемый реестр

Каждая операция — факт, который нельзя переписать. Баланс — проекция; сверка всегда сходится.

Идемпотентные платежи

Ключ идемпотентности на каждом платеже: повтор запроса не создаёт двойного списания.

Антифрод на потоке

Правила и скоринг на каждой транзакции в реальном времени: удержание или блок подозрительных.

Двойная запись и аудит

Бухгалтерская двойная запись, журнал каждого действия, «4 глаза» на критичных операциях.

Active-active

Stateless-сервисы за шиной событий, две зоны, авто-переключение без простоя.

СБП и НСПК

Интеграции с национальными платёжными системами: идемпотентные ретраи и сверка.

Под капотом

Платёж — идемпотентный факт в реестре.

Каждый платёж проходит проверку идемпотентности и антифрод, затем добавляется неизменяемым событием в реестр. Повтор запроса не задвоит списание, а баланс — это проекция фактов.

PYpayments.goFastAPI · async
$ POST /payments → 201 · ledger append · fraud ok · idempotent

Стек

Ядро
  • Go
  • gRPC
  • PostgreSQL
Поток событий
  • Apache Kafka
  • Schema Registry
Антифрод
  • ClickHouse
  • Redis
  • Потоковый скоринг
Инфраструктура
  • Kubernetes
  • Docker
  • ArgoCD
  • Vault
Наблюдаемость
  • Prometheus
  • Grafana
  • OpenTelemetry
Интеграции · Безопасность
  • СБП
  • НСПК
  • mTLS
  • RBAC
  • Аудит
🥷 Код принят. Хочешь к нам — расшифруй и пришли разгадку на hello@itkiller.pro:
SVRLLVJFQURZLVRPLUJVSUxE