피드로 돌아가기
컬리 기술블로그Backend
원문 읽기
주소정제 서비스 내재화 - 3화 ( 노가다의 달달한 열매 )
쿠팡이 행정안전부 주소 기반 지원 사이트의 네비게이션용 DB를 직접 수집·처리해 1,080만 개 건물 데이터베이스를 완성하고 배송가능 권역 캐시 구조를 건물관리번호 기반으로 단순화
AI 요약
Context
주소정제 1.0은 행정안전부 API에 의존했으나 API 장애로 인한 배송 서비스 중단 위험이 발생했다. 외부 의존성 제거를 위해 자체 건물 데이터베이스 구축이 필요했다.
Technical Solution
- 행정안전부 주소기반 지원 사이트에서 제공하는 네비게이션용 DB 데이터셋 활용: 지역별로 구분된 txt 파일 형식으로 제공되는 전국 건물 정보 수집
- 다단계 검증 전략 적용: 세종특별자치시(약 56,000개 건물)부터 시작해 검증 완료 후 전국 확대
- GRS80 UTM-K 좌표계 변환 로직 구현: 제공된 좌표계를 지리적 위경도(위도/경도 36~, 127~)로 변환 후 DB 저장
- 멀티파트 파라미터 기반 파일 처리 API 개발: zip 파일 압축 해제 후 지역별 txt 파일을 순차 처리하는 수동 API 구현
- 일 단위 동기화 API 연계: 행정안전부의 비공개 네비게이션용 DB 일단위 동기화 API 신청을 통해 매일 아침 6시 자동 업데이트
Impact
- 구축된 건물 데이터: 스테이징 환경 기준 10,778,620개
- 배송가능 권역 캐시 메모리 사용량 감소: 기존 우편번호+위경도 조합 키에서 건물관리번호 단일 키로 변경
- 배송가능 권역 캐시 관리 단순화: 우편번호 변경과 무관하게 건물관리번호 기반으로 관리 가능
Key Takeaway
공공데이터 DB 구축 시 필드 누락을 방지하기 위해 사전에 필요 여부를 판단하지 말고 제공되는 모든 컬럼을 먼저 수집한 후 나중에 정리하는 것이 효율적이다. 또한 초기 아키텍처 결정 시 외부 API 안정성에 대한 검증이 향후 시스템 안정성과 확장성에 미치는 영향이 크다.
실천 포인트
배송·로지스틱 시스템을 구축하는 팀에서 주소 데이터를 행정안전부의 공식 네비게이션용 DB(전자지도 다운로드)로 전환하면, 외부 API 의존성을 제거하면서도 건물 단위 정확도를 확보할 수 있다. 이때 GRS80 UTM-K 좌표계를 미리 지리적 위경도로 변환해 저장하고, 일단위 동기화 API를 별도로 신청(행정안전부 1588-0061)하면 구축 후 지속적 최신화가 가능하다.