Project Crestia

오랜만에 포스팅을 남기게 되네요. 이번 포스팅 주제는 다음 우편번호 서비스입니다.


올해 본격적으로 도로명주소가 도입되면서 기존의 주소 검색 시스템 또한 개편되어야 할 필요성이 생겼지만, 순수 DB만 6GB 정도에 달하는 용량에 도로명주소의 복잡한 체계로 인해 도로명주소 검색 시스템을 구현하는 일은 상당히 복잡하기 짝이 없는 일입니다.


물론 미래창조과학부 산하 우정사업본부 (우체국)에서 Open API를 제공 [링크] 하고는 있지만, XML을 통해 쿼리에 대한 응답이 돌아오는 방식이라 별도로 파싱 (Parsing)을 하는 코드를 짜야하며 (문제는 가이드에 웹 개발용 예제 코드는 한줄도 없고, 그냥 리턴값이나 변수명만 설명하는 정도에서 그침...), 그냥 단순 HTML 및 JavaScript만으로는 주소 검색을 구현하기 어렵다는 단점도 있습니다.


물론 이러한 도로명 주소 문제를 해결하기 위해 개인 개발자 또는 웹 솔루션 회사에서 개발하여 무료로 제공하는 뛰어난 서비스도 여럿 있지만, 아무래도 방대한 DB 용량상 일일 검색 횟수 제한이라던가, 개발자의 개인 사정으로 인해 서비스가 예고 없이 중단되거나 할 가능성이 있다는 게 단점이라 볼 수 있습니다. 그리고 중급 이상의 개발자에게는 별 문제가 없습니다만, 초보 개발자가 쓰기에는 API가 좀 복잡한 편인 경우가 많습니다. 만약 자신의 프로그래밍 실력을 늘리고 싶거나, 고급 기능을 구현하고 싶다면 다음 우편번호 서비스보다는 이쪽을 이용하는 것을 추천드리고 싶네요.


자, 이제 본격적으로 다음 우편번호 서비스에 대해 소개해 보도록 하죠. 다음 우편번호 서비스는 개인 및 상업적 용도 모두 무료이며, UI를 기본으로 제공하기 때문에 사용 방법이 매우 간편합니다. 그리고 대형 포털에서 운영하는 것이니 서비스 자체는 안정적으로 오래 갈거라 생각됩니다.


예제 코드 및 자세한 사용 방법은 다음에서 가이드를 잘 만들어 둬서 (예제 코드만 복붙해도 바로 쓸 수 있을 정도!) 따로 본 포스트에서 소개해 드릴 필요가 없을 것 같습니다. 따라서 가이드 링크를 걸어드립니다. [여기]를 클릭하시면 새 창으로 보실 수 있습니다.


가이드를 보시면 아시겠지만, 굉장히 간단한 방법으로 사용할 수 있습니다. 일단 API키 발급 자체가 없고, 다음에서 제공하는 외부 js 파일을 인클루드하여 사용하는 형태입니다. 그리고 팝업창 띄우기나 쿼리 값 리턴은 모두 JavaScript로 동작하므로 사용하는 언어에 따른 특별한 제약이 없습니다. 또한 리턴되는 쿼리값을 예제 코드처럼 다 받아올 수도 있고, 선택적으로 받아오는 것도 가능합니다. 거기에 HTTPS를 통해 js를 인클루드할 수 있도록 별도 CDN을 제공하고 있다는 점입니다. 따라서 HTTPS 페이지에서도 보안 경고 뜨는 일 없이 사용할 수 있습니다. 마지막으로, 크로스 브라우징이 잘 되어 있어서 어떤 브라우저에서도 오류나 디자인 깨짐 없이 잘 작동합니다.


창은 새 팝업 창 또는 div 레이어에 iframe 방식 (기본값 또는 자동 리사이즈)으로 띄울 수 있도록 되어 있습니다. 가이드에서 두 방식 모두 상세한 예제 코드가 제공되고 있습니다. 참고로 이 서비스의 주소 검색 횟수 제한은 공식 블로그에 따르면 없다고 합니다 (8월 12일 확인).


단점이라면 그리고 하단에 다음 로고와 우편번호 서비스 홍보 링크가 들어갑니다 (7월 16일부로 하단에만 들어가는 것으로 수정됨). 다만 외부 광고가 아니라서 이 정도는 용인 가능한 수준이라 봅니다. 그리고 서비스 향상을 위해 레퍼러 (Referrer)와 주소 검색 내용이 수집되어 다음측에 로그로 남는다고 합니다. 어차피 개인 개발자 서비스도 서버에 쿼리 날리면 레퍼러와 검색 내용이 로그로 남겨질 수 있는 여지가 있어 딱히 이 점은 단점으로 보기엔 좀 애매한 감도 없잖아 있네요.


* 추가 : 7월 30일자 업데이트를 통해 지번 주소, 도로명 주소 여부를 알려주는 변수가 추가되었고, 지번 주소에서 번지수가 같이 들어가던 것도 분리되어 쿼리값을 리턴받을 수 있도록 변경되었습니다.


* 추가 2 : 버전 2에서 도로명주소와 구 지번 주소가 동시에 표출되는 방식으로 변경되었습니다.