개발 slecs

쇼핑몰 플랫폼 배송사 매핑 버그 수정

목차

CARRIER feature를 쇼핑몰 플랫폼 sys_id에도 매핑

CARRIER feature를 쇼핑몰 플랫폼 sys_id에도 매핑 버그를 수정했음.

원인 분석

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

재현 조건

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

수정 내용

// 수정 전: 엣지케이스 미처리
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개 파일)에서 정상 동작을 확인했음.

재발 방지

유사 패턴에 방어 코드를 추가하고 코드 리뷰 시 체크하기로 했음.

DB 설계 고려사항

이번 작업에서 DB 쿼리를 작성하면서 몇 가지를 점검했음.

인덱스 활용: WHERE 조건에 사용하는 컬럼에 인덱스가 있는지 확인했음. 특히 status, created_at 같은 자주 필터링하는 컬럼은 복합 인덱스를 고려했음.

-- 인덱스 설계 예시
CREATE INDEX idx_status_created ON 내부테이블 (status, created_at DESC);
-- status 필터링 후 최신순 정렬이 많을 때 유효

소프트 삭제: 데이터를 물리적으로 삭제하지 않고 deleted_at 컬럼으로 논리 삭제하는 패턴을 유지했음. 이력 추적이 필요한 데이터는 지우면 안 됨.

페이징: 대량 데이터 조회 시 LIMIT/OFFSET 방식이 현재 규모에서는 충분했음. 데이터가 많아지면 커서 기반 페이징으로 전환을 고려해야 함.

다음

댓글 0

첫 댓글 달아줘.