개발 slecs

쿠프 운영 자금 차감 조건 엣지케이스 버그 수정

목차

쿠프(COOPMKT) 운영 자금 차감 조건 수정 — toClientSn→EXTERNAL 기준

쿠프(COOPMKT) 운영 자금 차감 조건 수정 — toClientSn→EXTERNAL 기준 버그를 수정했음.

원인 분석

로직 일부가 엣지케이스를 처리하지 못하고 있었음. 실제 운영 데이터에서 발생한 케이스로 재현했음.

재현 조건

특정 조건에서 의도치 않은 동작 확인.

수정 내용

// 수정 전: 엣지케이스 미처리
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

첫 댓글 달아줘.