Содержание
Финтех-продукт отличается от обычного веб-сервиса ценой ошибки: потерянный или задвоенный платёж, утечка данных или несколько часов простоя стоят денег клиентов и доверия, а иногда и лицензии. Поэтому в разработку сразу закладывают точный учёт денег, аудит всех операций, строгий контроль доступа, отказоустойчивость и соответствие отраслевым требованиям — от стандарта PCI DSS до требований регулятора.
Разберём, какие требования предъявляются к финтех-продуктам и как их учесть в архитектуре и процессе.
Чем разработка финтеха отличается от обычного продукта?
Разработка финтеха отличается тем, что надёжность и безопасность становятся не качеством «на потом», а основными требованиями с первого дня. Каждая операция с деньгами должна быть точной, отслеживаемой и воспроизводимой, а система — продолжать работать при сбоях отдельных компонентов.
| Область | Обычный продукт | Финтех-продукт |
|---|---|---|
| Учёт денег | Сумма в заказе | Двойная запись, баланс сходится до копейки |
| Журнал операций | Логи для отладки | Неизменяемый журнал для аудита |
| Доступ сотрудников | Роли в админке | Минимальные права, подтверждение критичных действий |
| Доступность | Простой нежелателен | Простой измеряется деньгами и штрафами |
| Изменения в продакшене | Выкладка по готовности | Контроль изменений, ревью, возможность отката |
| Регулирование | Общие требования к данным | Отраслевые стандарты и требования регулятора |
Как правильно хранить и считать деньги?
Деньги хранят в целых минимальных единицах валюты или точных десятичных типах, а не в числах с плавающей точкой, и учитывают по принципу двойной записи: каждая операция — это проводка, которая списывает сумму с одного счёта и зачисляет на другой. Баланс не хранится как изменяемое число, а считается из проводок или сверяется с ними.
CREATE TABLE ledger_entries (
id bigserial PRIMARY KEY,
transaction_id uuid NOT NULL,
account_id bigint NOT NULL REFERENCES accounts(id),
amount bigint NOT NULL, -- в копейках; списание — отрицательное
currency char(3) NOT NULL,
created_at timestamptz NOT NULL DEFAULT now()
);
-- Проверка: сумма проводок каждой транзакции равна нулю
SELECT transaction_id FROM ledger_entries
GROUP BY transaction_id HAVING sum(amount) <> 0;
Правила работы с операциями
- Каждая операция идемпотентна — повторный запрос не создаёт вторую проводку.
- Записи журнала не изменяются и не удаляются; ошибку исправляет обратная проводка.
- Операции над балансом выполняются в транзакциях с блокировками, чтобы исключить гонки.
- Ежедневная сверка с банками и платёжными провайдерами.
Как защититься от двойных списаний на уровне API и вебхуков, мы подробно разбирали в статье идемпотентность платежей и вебхуков.
Фото: Unsplash
Какие требования безопасности предъявляются к финтеху?
К финтеху предъявляют требования по защите данных, контролю доступа и журналированию, а часть из них закреплена в отраслевых стандартах. Если продукт хранит или обрабатывает данные банковских карт, применяется стандарт PCI DSS; в России финансовые организации выполняют требования Банка России, в Евросоюзе действует регламент DORA о цифровой операционной устойчивости.
Базовые меры, которые нужны почти любому финтех-продукту:
- данные карт не проходят через ваши серверы — их обрабатывает сертифицированный провайдер;
- шифрование чувствительных данных при хранении и передаче;
- двухфакторная аутентификация для клиентов и обязательно для сотрудников;
- принцип минимальных прав и подтверждение критичных действий вторым человеком;
- неизменяемый журнал действий пользователей и сотрудников;
- регулярные тесты на проникновение и внешний аудит.
Общие уязвимости веб-приложений и их защита — в статье OWASP Top 10 простыми словами. Конкретный набор обязательных требований зависит от лицензии и юрисдикции, поэтому его стоит определять вместе с юристами и специалистами по комплаенсу до начала разработки.
Как обеспечить надёжность и доступность?
Надёжность финтех-продукта обеспечивают резервированием всех критичных компонентов, продуманным поведением при сбоях внешних сервисов и наблюдаемостью: команда узнаёт о проблеме раньше клиентов. Для каждого сервиса заранее определяют допустимое время простоя и допустимую потерю данных.
Что закладывают в архитектуру:
- Реплики базы данных и автоматическое переключение при отказе основной.
- Бэкапы с регулярной проверкой восстановления.
- Очереди и повторы для вызовов банков и провайдеров, которые бывают недоступны.
- Мониторинг бизнес-метрик — числа успешных платежей в минуту, — а не только серверов.
- План действий при инцидентах и учения по нему.
Как организовать процесс разработки финтеха?
Процесс разработки финтеха строят вокруг контроля изменений: каждое изменение проходит ревью, автоматические тесты и проверки безопасности, выкладка документируется и может быть быстро отменена. Доступ разработчиков к продакшен-данным ограничен и журналируется.
Что обычно входит в процесс:
- обязательное код-ревью, для денежной логики — двумя разработчиками;
- автотесты на все денежные сценарии, включая ошибки и повторы;
- раздельные окружения и данные: разработчики не работают с реальными данными клиентов;
- автоматическая проверка зависимостей и секретов в CI;
- документированные релизы и возможность отката.
Коротко
- В финтехе цена ошибки — деньги клиентов и доверие, поэтому надёжность и безопасность закладываются с первого дня.
- Деньги храните в целых минимальных единицах, учитывайте двойной записью и не изменяйте журнал операций.
- Данные карт отдавайте сертифицированному провайдеру, требования PCI DSS и регулятора определяйте заранее.
- Резервирование, бэкапы с проверкой, очереди для внешних вызовов и мониторинг бизнес-метрик обязательны.
- Процесс строится вокруг контроля изменений: ревью, тесты, проверки безопасности и возможность отката.
Частые вопросы
Нужен ли сертификат PCI DSS, если платежи принимает провайдер?
Если данные карт вводятся на странице или в виджете сертифицированного провайдера и не проходят через ваши серверы, объём требований к вам заметно меньше. Точный уровень соответствия стоит уточнить у провайдера и эквайера.
Можно ли делать финтех-MVP без всех этих требований?
Можно упростить интерфейс и число функций, но не учёт денег, безопасность и соответствие регуляторным требованиям. Проверять гипотезу разумно на ограниченной аудитории и с партнёром, у которого уже есть нужная лицензия.
Какой стек подходит для финтеха?
Подойдёт любой зрелый стек со строгой типизацией и хорошими инструментами тестирования. Важнее не язык, а дисциплина: точные типы для денег, транзакции, аудит, тесты и контроль изменений.



