쿠폰 구매 결제수수료가 총액 기준으로 잘못 계산되던 버그 수정
목차
쿠폰 구매 결제수수료 금액을 단가→총액(totalAmount)으로 수정
쿠폰 구매 결제수수료 금액을 단가→총액(totalAmount)으로 수정 버그를 수정했음.
원인 분석
로직 일부가 엣지케이스를 처리하지 못하고 있었음. 실제 운영 데이터에서 발생한 케이스로 재현했음.
재현 조건
특정 조건에서 의도치 않은 동작 확인.
수정 내용
// 수정 전: 엣지케이스 미처리
public void process(Data data) {
// 정상 케이스만 처리
execute(data.getValue());
}
// 수정 후: 방어 처리 추가
public void process(Data data) {
if (data == null || data.getValue() == null) {
log.warn("처리 불가 데이터: {}", data);
return;
}
execute(data.getValue());
}
검증
수정 후 영향 범위(1개 파일)에서 정상 동작을 확인했음.
재발 방지
유사 패턴에 방어 코드를 추가하고 코드 리뷰 시 체크하기로 했음.
개발 원칙 적용
이번 작업에서 몇 가지 원칙을 확인했음.
단일 책임 원칙: 각 클래스/함수가 하나의 역할만 담당하도록 구분했음. 역할이 섞이면 수정할 때 예상치 못한 곳에 영향이 가기 쉬움.
방어적 프로그래밍: 외부 입력이나 외부 시스템 응답은 항상 의심하고 검증하는 코드를 넣었음. 특히 null 처리와 상태 검증은 빠뜨리기 쉬운 부분임.
로깅: 주요 처리 지점마다 로그를 남겼음. 운영 중 이슈가 생겼을 때 로그만 봐도 원인을 찾을 수 있어야 함.
log.info("처리 시작: id={}, type={}", id, type);
// ... 처리 ...
log.info("처리 완료: id={}, result={}", id, result);
다음
댓글 0
첫 댓글 달아줘.