배우고, 기록하고, 성장합니다 | GitHub

$ls -la ./posts/Payment

Payment

5 posts

주문/결제 이중 상태 머신과 트랜잭션 분리 전략

OrderStatus 5개로 시작했다가 환불 요구사항에 8개로 늘리고, PG 승인-주문 상태 불일치 사고를 겪은 뒤 트랜잭션을 분리한 이야기

PaymentEvent 이벤트 소싱과 PaymentDetail 다형성

결제 상태만 저장했다가 고객 문의를 못 풀게 된 뒤, 모든 상태 변화를 이벤트로 기록하게 된 이야기

Toss Payments 연동: 3계층 구조와 에러 처리 전략

PG 연동 코드를 UseCase에 직접 넣었다가 테스트 불가능해진 뒤, 3계층으로 분리하고 에러 처리를 체계화한 이야기

Domain Model과 JPA Entity를 분리한 이유

OrderEntity에 비즈니스 로직을 넣었다가 테스트가 지옥이 되어, 도메인 모델을 따로 빼게 된 이야기

임시 주문 → 실주문 2단계 결제 모델 설계하기

주문 테이블 하나로 시작했다가 PENDING 주문 폭탄을 맞고, TemporaryOrder를 분리하게 된 이야기