돈을 핵심 상태로 다루는 핀테크 시스템은 일반적인 소프트웨어와는 다른 엄격한 설계 원칙을 따라야 합니다. 최근 공개된 '핀테크 엔지니어링 핸드북'은 '데이터를 만들지 않고(No invented data), 잃지 않으며(No lost data), 아무것도 신뢰하지 않는다(No trust)'는 세 가지 기본 원칙을 제시하며, 핀테크 시스템의 견고성과 신뢰성을 확보하기 위한 구체적인 방법론을 설명합니다.
핸드북은 금액 표현부터 강조합니다. 부동소수점(float/double)은 정밀도 손실 위험이 있어 피하고, 임의 정밀도 타입인 BigDecimal, 최소 단위 정수, 또는 유리수(rational number)를 책임에 맞게 조합해야 합니다. 특히 JSON 직렬화 시에도 IEEE-754 double 문제로 인해 정밀도 손실이 발생할 수 있으므로, 금액은 문자열이나 최소 단위 정수로 전송해야 합니다. 장부 관리는 복식부기(double-entry bookkeeping) 원칙을 따르며, 불변 감사 추적(immutable audit trail)과 가치 시간(value time), 기록 시간(booking time), 정산 시간(settlement time) 분리를 통해 잔액과 보고서를 정확하게 재구성할 수 있도록 해야 합니다. 실제 돈의 흐름은 예약(reservation), 멱등성(idempotency), 재시작 가능한 상태 머신(restartable state machine), 외부 API 및 웹훅 검증, 아웃박스(outbox) 패턴, 변경 데이터 캡처(CDC), 그리고 대사(reconciliation) 과정을 통해 중복 지출과 누락을 방지해야 합니다. 또한, 접근 제어, 4인의 눈(four-eyes) 승인, SDLC(소프트웨어 개발 생명 주기) 변경 추적, 속성 기반 테스트(property-based testing), 장애 주입(fault injection) 등을 통해 내부 운영자와 코드 변경까지도 신뢰 경계(trust boundary)로 취급해야 합니다.
이러한 원칙들은 금융 시스템이 규제 감사 대상이며, 사용자 자금과 회사 자금의 혼합 여부, 수익의 설명 가능성, 외부 정보와의 일치 여부, 자금 보호 상태 등을 증명해야 하는 특성 때문에 더욱 중요합니다. 돈의 이동뿐만 아니라 수동 개입, 수수료 일정, 환율 소스, 한도 설정 변경, 권한 변경 등 모든 설정 변경도 감사 추적의 대상이 됩니다. 이는 핀테크 시스템이 단순한 데이터 처리 시스템이 아니라, 돈이라는 민감한 자산을 다루는 고도의 신뢰 시스템임을 의미합니다. 개발자들은 이러한 지침을 통해 예측 불가능한 오류를 줄이고, 금융 서비스의 안정성과 투명성을 높이는 데 기여할 수 있습니다.