외부 API 연동 시 데이터 정합성 보장 설계 — Fast-Fail + Kafka 보상 트랜잭션
·
Backend/Server
들어가며금융 서비스에서 외부 협력사 API를 연동할 때, "외부는 성공했는데 내부는 실패한" 상황을 어떻게 처리할 것인가는 피할 수 없는 문제다.근무하고 있는 회사에서 협력사와 연동된 출금 기능을 운영하던 중, 내부 DB 잔액과 협력사의 실제 카드 잔액이 불일치하는 문제가 발생했다. 이 글에서는 문제를 어떻게 발견하고, 원인을 분석하고, 어떤 설계로 해결했는지를 정리한다. 문제 발견어떤 목표를 설정하고 돈을 모을 수 있는 A통장 서비스(가칭으로 하겠습니다)에서, 특정 시점 이후 출금이 불가능하다는 문의가 들어왔다. 확인해보니 내부 DB 잔액과 협력사의 실제 카드 잔액이 일치하지 않는 상황이었다. 원인 분석1단계: 거래 로그 확인해당 날짜의 거래 로그를 확인한 결과, 출금이 **'실패'**로 기록되어 있..