배경
현재 GET /my-business/profile은 지갑 주소(wallet.address)만 반환하고
실제 XRP 잔고는 포함되지 않습니다.
POST /pay 시 validateEscrowFunds가 매번 XRPL 노드에
직접 쿼리하여 잔고를 확인합니다. 결제가 몰릴 경우 XRPL 노드
응답 지연이 결제 개시 응답 시간에 직접 영향을 줍니다.
목표
- XRPL 잔고를 Redis에 단기 캐싱하여 XRPL 노드 쿼리 횟수 감소
GET /my-business/profile 응답에 walletBalance 필드 추가
캐시 설계
- 키:
xrpl:balance:{walletAddress}
- TTL: 30초 (잔고는 트랜잭션마다 변하므로 짧게)
- 조회: 캐시 hit → 즉시 반환 / miss → XRPL 노드 쿼리 후 캐시 저장
적용 지점
validateEscrowFunds — 잔고 조회 시 캐시 우선 확인
GET /my-business/profile — walletBalance 필드 추가
캐시 있으면 즉시, 없으면 XRPL 조회 후 캐시 저장
캐시 무효화
결제가 ACTIVE로 전환될 때 (EscrowCreateProcessor.markActive 이후)
해당 buyer 지갑의 캐시 키를 삭제 → 다음 조회 시 최신 잔고 반영
체크리스트
배경
현재
GET /my-business/profile은 지갑 주소(wallet.address)만 반환하고실제 XRP 잔고는 포함되지 않습니다.
POST /pay시validateEscrowFunds가 매번 XRPL 노드에직접 쿼리하여 잔고를 확인합니다. 결제가 몰릴 경우 XRPL 노드
응답 지연이 결제 개시 응답 시간에 직접 영향을 줍니다.
목표
GET /my-business/profile응답에walletBalance필드 추가캐시 설계
xrpl:balance:{walletAddress}적용 지점
validateEscrowFunds— 잔고 조회 시 캐시 우선 확인GET /my-business/profile— walletBalance 필드 추가캐시 있으면 즉시, 없으면 XRPL 조회 후 캐시 저장
캐시 무효화
결제가 ACTIVE로 전환될 때 (EscrowCreateProcessor.markActive 이후)
해당 buyer 지갑의 캐시 키를 삭제 → 다음 조회 시 최신 잔고 반영
체크리스트
getAccountBalance(address)+ 캐시 레이어 추가