Справочник инженеров финтеха: паттерны для работы с деньгами
Fintech Engineering Handbook, это живой документ, описывающий критические инженерные паттерны для систем, работающих с деньгами. Справочник базируется на трёх незыблемых принципах: отсутствие придуманных данных (деньги нельзя создавать из ничего, требуется идемпотентность и сверка), отсутствие потери данных (полная точность, at-least-once доставка, event sourcing, неизменяемость) и отсутствие доверия (проверка вебхуков, кросс-проверка данных, громкие сбои при нарушении предположений).
Справочник охватывает ключевые области: представление денег (выбор между float, arbitrary precision, целыми числами в минорных единицах и рациональными числами), стратегии округления (явное, привязанное к бизнес-контексту, минимальное и учитывающее остатки), работу с валютами (связка суммы и кода, контролируемые наборы, различие между фиатом и крипто), обменные курсы (направленность, временные метки, трансакционные vs. справочные курсы) и двойную бухгалтерию (движения денег между счетами, исторические временные метки для стоимости/записи/расчёта, разделение между фронт- и бэк-офисным временем).
Документ предназначен для трёх категорий: новичков в финтехе, ветеранов как справочный ресурс для типовых задач и аутсайдеров для понимания специфики разработки для финансовых систем. Материал преднамеренно структурирован как живой документ, приветствуются контрибьюции.
Ключевые факты
- Три принципа финтеха: отсутствие придуманных данных, отсутствие потери данных, отсутствие доверия, направляют все инженерные решения
- Выбор представления денег (float, BigDecimal, целые числа в минорных единицах, рациональные), критичен, float почти никогда не подходит для денежных операций
- Двойная запись: деньги только двигаются между счётами, никогда не создаются или уничтожаются, баланс считается из движений, записи неизменяемы
- Временные метки: value time (когда произошло), booking time (когда записано), settlement time (когда переведено) требуют раздельного учёта для правильного отчётности
- Округление, бизнес-решение: требует явного управления, минимизации операций, отслеживания остатков, чтобы не создавать или теять деньги
Почему это важно
Финтех требует иного подхода, чем типовая разработка. Деньги не допускают приблизительного обращения, каждая копейка, каждый перевод должны быть отслежены, каждое предположение проверено. Неправильное представление денег, потеря истории или недостаток проверок могут привести к балансовым разрывам, потере репутации и нарушению закона. Справочник фиксирует проверенные паттерны, которые строят надёжные системы.
Кому это важно
Инженерам и архитекторам, разрабатывающим платёжные системы, платформы для управления активами, кредитные продукты и любые приложения, где финансовые данные, сердце системы. Также бизнес-аналитикам и регуляторам, которым нужно понять, почему финтех требует повышенную осторожность. Новичкам в финтехе справочник даёт общую лексику и паттерны; ветеранам, стандартный источник для обоснования решений.
Как это применить
Для проекта: (1) выберите представление денег в зависимости от класса системы (хранение vs. вычисление может отличаться); (2) убедитесь, что все денежные операции используют контролируемую точность (не float), а сериализация денег идёт строкой или целым числом, не JSON-числом; (3) внедрите двойную запись для всех движений; (4) разделите и отслеживайте value/booking/settlement times; (5) явно управляйте округлением с учётом бизнес-требований; (6) ведите полный audit trail для всех операций; (7) валидируйте валюты и обменные курсы по контролируемым источникам.
Можно ли доверять
Справочник опирается на проверенные практики финансовой инженерии, которые приняты в банках и платёжных системах десятилетиями. Автор (Péter Pitula), опытный инженер, материал рецензируется сообществом (живой документ). Однако справочник, рекомендация, а не закон; конкретные требования зависят от юрисдикции, регулятора и типа денежного потока. Перед внедрением консультируйтесь с компетентным финансовым юристом и аудитором.
Риски и подводные камни
Главный риск, недооценка точности: экономия на представлении денег (выбор float, сокращение истории) ведёт к незаметным ошибкам, которые проявляются в масштабе. Округление часто упускается при проектировании, но его неправильное управление создаёт дыры в учёте. Доверие к внешним провайдерам без проверки опасно: всегда кросс-проверяйте обменные курсы, статусы платежей, баланс. Недостаток audit trail усложняет отладку и делает невозможной надлежащую проверку при регуляторной проверке. Сложность финансовых систем часто недооценивается в сроках и ресурсах, планируйте с запасом.
«Деньги нельзя создавать из ничего, поэтому мы не можем допустить дублей или произвольных обновлений баланса. Мы обеспечиваем это идемпотентностью, дедупликацией и сверкой.»
— Fintech Engineering Handbook