본 프로젝트는 요구사항 변경에도 유연하게 대응할 수 있는 확장성과 결제 데이터의 불변성을 고려하여 개발하였습니다.
-
문제 상황 : 할인 정책은 운영 상황에 따라 수정되거나 삭제될 수 있습니다. 하지만 주문 테이블이 정책 테이블을 참조만 할 경우, 정책 변경 시 과거 주문의 할인액을 계산할 수 없거나 잘못된 결과가 출력되는 정합성 문제가 발생합니다.
-
해결 방안 : 따라서 결제 시점의 등급, 정책명, 할인값, 할인종류 등을
AppliedDiscount테이블에 저장하여 데이터의 불변성을 보장했습니다. 추가로 조회 시마다 연산 로직을 수행해야 하는 오버헤드도 해결했습니다.
-
문제 상황 : 할인 정책이 짧은 주기로 변경되기 때문에 등급 할인과 함께 결제 수단 등 할인 조건이 추가될 때마다 핵심 서비스 로직을 직접 수정해야 합니다.
-
해결 방안 : 이를 Feature 브랜치에서 할인 정책(등급 할인, 결제 수단 할인)을 독립된 컴포넌트로 분리했습니다. 따라서 할인 로직을 수정하거나 추가하더라도 결제 시스템에 영향이 적은 유연한 아키텍처를 구축했습니다.
-
각 등급(NORMAL, VIP, VVIP)에 따른 할인 검증
-
등급 할인 적용 후 결제 수단 할인이 중복으로 적용되는지 검증
-
정책 수정 및 삭제 후에도 과거 결제 이력이 유지되는지 검증