피드로 돌아가기
컬리 기술블로그Backend
원문 읽기
주소정제 서비스 내재화 - 마지막 화 ( 엔드 게임 )
컬리가 외부 주소정제 API 호출을 1% 이하로 감소시켜 약 10개월 개발 후 외부업체 계약 완전 종료
AI 요약
Context
컬리는 배송 시스템에서 고객의 주소 데이터를 정제하기 위해 외부업체 API에 의존하고 있었다. 단독건물과 복합건물의 주소 매칭, 행정구역 변경으로 인한 지번 주소 처리, 철거된 건물 같은 LOW 레벨 케이스 등 내부에서 처리하지 못하는 사례들이 남아있었다.
Technical Solution
- 건물 DB 구축: 행안부 공공데이터(시도, 시군구, 도로명코드, 건물본번, 건물부번)를 기반으로 건물관리번호 매핑 테이블 생성
- AddressSearchParam 객체 기반 통일: isJibunAddress(), isRoadAddress() 메서드로 주소 형태를 구분한 후 단일 처리 로직 적용
- 지번 주소 처리: 행안부 도로명 조회 API 호출로 지번을 도로명으로 변환하여 건물 DB 조회 (일평균 20건 미만의 저빈도 요청만 처리)
- 변경이력 DB 도입: OMS 일단위 업데이트 시 행정구역 변경이나 도로명 변경을 감지하여 변경 전 내용 기록, 정제 실패 시 이력 DB에서 과거 주소 조회
- 백오피스 기능 추가: 변경이력 DB의 강제 추가/수정/삭제 기능으로 수기대응 가능, 약 3개월간 일 1~2건 수준으로 처리하며 점진적 해결
- 지도 기반 검증 시스템: 주소 관련 CS 문의 대응 시 쿼리와 로그 확인 대신 지도 기반 백오피스 페이지에서 클릭 몇 번으로 원인 파악 가능하게 개선
Impact
외부업체 API 호출량을 약 1% 이하로 감소시켰다. 8월 한 달간 정상 주소 중 외부 정제 호출 케이스 점검 후 9월 한 달간 외부업체 호출 인터페이스 완전 제거 상태로 운영하여 버그나 문제 없음을 확인했다.
Key Takeaway
주소정제처럼 외부 서비스의 응답을 정답으로 하는 내재화 프로젝트는 명확한 목표를 가지고 단계별(단독건물 → 복합건물 → 지번 주소 → LOW 레벨)로 접근하되, 도메인 지식 확보(건물 DB 미리 구축)와 검증 도구(지도 기반 백오피스) 확보가 개발 속도와 버그 감소에 결정적 역할을 한다.
실천 포인트
배송, 주소 조회 등 공공데이터 기반 위치 정제 시스템을 개발하는 팀에서는 행안부 공공데이터로 건물 DB를 사전에 구축한 후 변경이력 DB를 병렬로 유지하면서, 백오피스 UI를 통해 수기대응 가능하도록 설계하면 외부 API 호출을 1% 이하로 감소시키고 운영 효율성을 극적으로 개선할 수 있다.