Процессинг и антифрод для банка
«Меридиан» — розничный банк. Его процессинг считал балансы «на лету» и плыл после правок справочников, антифрод жил на ручных правилах, а пики в зарплатные дни клали систему. Мы собрали транзакционное ядро на неизменяемом реестре операций: баланс — это проекция фактов, платежи идемпотентны, антифрод работает на потоке, а кластер держит пик в active-active.
Задача
Легаси-процессинг хранил изменяемые балансы и пересчитывал их на лету. После правок справочников и ручных корректировок суммы «плыли», а сверка занимала дни.
Антифрод работал на статичных правилах и срабатывал постфактум. В зарплатные дни и распродажи нагрузка росла в разы, а система масштабировалась только вертикально — упиралась в потолок и падала ночью.
Решение
Перешли на event sourcing: каждая операция — неизменяемый факт в реестре, а баланс считается как проекция этих фактов. Историю нельзя переписать, сверка мгновенная и всегда сходится. Платежи идемпотентны по ключу — повтор запроса не создаёт двойного списания.
Антифрод вынесли на потоковую обработку: правила и скоринг на каждой транзакции в реальном времени, подозрительные уходят на удержание или блок. Бухгалтерская двойная запись, аудит каждого действия, ролевой доступ и принцип «4 глаз» на критичных операциях.
Ядро — stateless-сервисы за шиной событий, active-active в двух зонах с авто-переключением и горизонтальным масштабированием под пик. Интеграции с СБП и НСПК с идемпотентными ретраями, наблюдаемость с первого дня.
Результат
Ноль расхождений в балансах после правок, сверка — секунды вместо дней. Антифрод режет мошеннические операции на лету. Кластер держит пик в зарплатные дни без деградации отклика.
Банк получил процессинг, которому можно доверять цифры, и платформу, которая масштабируется горизонтально, а не «упирается в сервер».
Что внутри
Неизменяемый реестр
Каждая операция — факт, который нельзя переписать. Баланс — проекция; сверка всегда сходится.
Идемпотентные платежи
Ключ идемпотентности на каждом платеже: повтор запроса не создаёт двойного списания.
Антифрод на потоке
Правила и скоринг на каждой транзакции в реальном времени: удержание или блок подозрительных.
Двойная запись и аудит
Бухгалтерская двойная запись, журнал каждого действия, «4 глаза» на критичных операциях.
Active-active
Stateless-сервисы за шиной событий, две зоны, авто-переключение без простоя.
СБП и НСПК
Интеграции с национальными платёжными системами: идемпотентные ретраи и сверка.
Платёж — идемпотентный факт в реестре.
Каждый платёж проходит проверку идемпотентности и антифрод, затем добавляется неизменяемым событием в реестр. Повтор запроса не задвоит списание, а баланс — это проекция фактов.
Стек
- Go
- gRPC
- PostgreSQL
- Apache Kafka
- Schema Registry
- ClickHouse
- Redis
- Потоковый скоринг
- Kubernetes
- Docker
- ArgoCD
- Vault
- Prometheus
- Grafana
- OpenTelemetry
- СБП
- НСПК
- mTLS
- RBAC
- Аудит