Какие задачи решает бэк офис для банков
Что проверяют
Понимаете ли вы домен, в котором будете писать код, и видите ли, какие требования к Go-сервисам из него следуют. Интервьюер хочет услышать не устройство банка из учебника, а связь процессов с техническими решениями. Следом обычно спрашивают, как вы храните деньги и что делаете с повторным запросом.
Как отвечать
Сначала разведите роли. Фронт-офис работает с клиентом и заключает сделки, мидл-офис оценивает риски и контролирует лимиты, бэк-офис доводит операцию до конца и отражает её в учёте. Задачи бэк-офиса:
- обработка платежей: приём и проверка платёжных документов, отправка через платёжные системы и корреспондентские счета, всё чаще в форматах на базе ISO 20022;
- клиринг и расчёты: взаимозачёт требований и итоговое списание по карточным, биржевым и межбанковским операциям;
- сверка: сравнение своих данных с данными процессинга, платёжной системы, контрагента и разбор расхождений;
- учёт: проводки по двойной записи, начисление процентов и комиссий, закрытие операционного дня;
- комплаенс и отчётность: контроль операций по 115-ФЗ, обязательная отчётность в ЦБ, хранение данных для аудита.
Отсюда требования к коду на Go. Деньги не хранят во float64: либо целое число в копейках (int64), либо десятичный тип вроде shopspring/decimal, а в базе numeric. Повтор запроса не должен списать деньги дважды, для этого нужен ключ идемпотентности с уникальным индексом. Изменение баланса и событие для других сервисов пишутся в одной транзакции через outbox. Брокер гарантирует доставку at-least-once, поэтому консьюмеры дедуплицируют сообщения. Каждое изменение оставляет след для аудита, а ночные пакетные задачи умеют продолжить с места падения.
Где спотыкаются
Путают офисы: относят к бэк-офису обслуживание клиентов и управление рисками, которые обычно живут во фронт- и мидл-офисе.
Используют float64 для сумм. Уже 0.1 + 0.2 даёт не ровно 0.3, а в банке такая погрешность превращается в расхождение на сверке.
Не думают об идемпотентности и повторах: считают, что сеть надёжна, а сообщение придёт ровно один раз.