"제주 추가 3,000원 / 제주 외 도서지역 추가 5,000원"
온라인에서 상품을 주문할 때, 도서산간 및 제주 지역은 추가 배송비가 부과된다는 안내문구를 흔히 볼 수 있다. 해당 지역에 살고 있지 않는다면 별로 신경 쓰지 않고 지나쳤을 수도 있지만, 이 시스템이 자동으로 어떻게 작동하는지 생각해본 적 있는가? (전 없었어요..)
나는 주로 무형의 콘텐츠나 서비스를 제공하는 프로덕트를 담당하다보니, 실물 상품 배송과는 거리가 있었는데, 최근 실물 상품을 배송하는 부서와 협업을 하게되면서 이 부분에 대해 새롭게 알게 되었다. 이 글에서는 도서산간 추가 배송비가 자동으로 계산되는 과정과 이를 서비스에 어떻게 구현할 수 있는지에 대해 알아보려고 한다.
이 시스템은 판매자나 서비스가 사용하는 택배사마다 규정된 지역 또는 우편번호 리스트를 기반으로 작동한다.
각 택배사는 도서산간 지역에 대한 정보 리스트(지역명, 우편번호, 해당 지역의 추가 배송비)를 제공하고,
서비스는 고객이 배송지를 입력할 때 해당 우편번호가 도서산간 지역에 속하는지를 확인하게 된다.
그 결과, 만약 도서산간 지역으로 판단되면 추가 배송비가 결제 페이지에 자동으로 붙는 방식이다.
그렇다면, 서비스에서 이 기능을 어떻게 구현할지 상상으로 일을 해보았다.
우선, 서비스가 계약하고 있는 택배사로부터 도서산간 우편번호 리스트를 확보해야 한다. 대부분의 택배사는 이런 리스트를 제공하기 때문에, 이를 기준으로 시스템을 구축할 수 있다. 이 과정이 번거롭거나 여러 택배사를 사용하는 경우, 특정한 기준으로 일괄적용 해버리는 판매자들도 있다.
서비스의 목적은 고객이 원활하게 배송지 정보를 입력하고, 도서산간 여부와 추가 배송비를 자연스럽게 확인할 수 있도록 하는 것이다. 이를 기반으로 한 유저 스토리를 아주 간략하게 작성해보면 아래와 같다.
유저는 배송지 입력 완료 시, 해당 지역의 도서산간 여부를 확인할 수 있다.
유저는 도서산간 여부 확인 후, 자동으로 추가 배송비가 결제 페이지에 반영된 것을 볼 수 있다.
고객은 자신의 주소를 입력하기 전에 도서산간 지역인지 미리 확인할 수 있다.
이제 이 유저 스토리와 우편번호 리스트를 기반으로 개발이 이루어질 것이다.
▶ 데이터베이스 설계: 우편번호 리스트 데이터를 저장할 데이터베이스 테이블을 설계할 것이다. 이 테이블은 도서산간 지역 여부를 확인하는 데 사용된다.
▶ 로직 구현: 백엔드에서는 사용자가 입력한 우편번호가 도서산간 지역인지 확인하는 로직을 구현하고, 해당할 경우 추가 배송비를 계산하는 작업을 처리해야 한다.
▶ UIUX 작업: 프론트에서는 고객이 주소를 입력하면 바로 추가 배송비 여부를 알 수 있게 해주는 것이 중요하다. (세상에서 제일 아까운 것이 배송비 아니겠습니까) 예를 들어, 도서산간 지역이라면 알림 메시지를 띄워주는 방식이 좋은 사용자 경험을 제공할 수 있을 것이다.
지그재그에서는 도서산간 지역으로 배송지를 선택하면 결제금액 부분과 구매 버튼에서는 추가 배송비가 반영되었지만, 배송지를 변경한 고객이 바로 이 사실을 알 수는 없었다. 비밀스럽게(?) 추가 배송비가 부과된 느낌...
네이버쇼핑에서는 고객이 결제 페이지에서 도서산간 지역으로 배송지를 선택하면 즉시 알림 메시지로 해당 내용을 안내하고, 결제 금액이 실시간으로 변경되는 UI를 제공하고 있다. 이로 인해 고객은 배송비가 예상보다 더 나오는 상황을 미리 인지할 수 있었다.
도서산간 지역의 추가 배송비를 계산하는 시스템을 구축할 때에는 주의사항이 있을 수 있다.
1) 우편번호 리스트의 갱신: 도서산간 지역의 우편번호는 시간이 지남에 따라 변동될 수 있다. 따라서 택배사에 확인하여 최신 리스트로 지속적으로 업데이트해야 한다.
2) 미리 정보 제공: 도서산간 여부를 미리 확인할 수 있도록 공지사항 등을 작성하는 것이 고객의 수고스러움과 문의를 줄일 수 있는 방법 중 하나일 것이다.
나는 우연히 알게된 정보로 이 글을 적는 것이니 실제 업무를 하는 사람이 봤을 때는 이상해보일 수도 있다. 예를 들면 택배사에서 그런 리스트 안 준다든지... 택배사에서 알아서 API 주는데요? 라든지...
(찾아보니 택배사는 모르겠지만 Github에서 도서산간 여부를 확인해주는 API들을 몇몇개 보긴 했다)
실물 상품을 배송하는 프로덕트를 앞으로 담당하게 될지는 모르겠지만, 언젠가는 쓸모있게 사용할 정보일 수도 있고 새롭게 안 정보들을 그대로 흘려보내기 아까워서 브런치에 기록해둔다. ( •̀ .̫ •́ )✧
혹시 틀린 정보가 있거나 더 덧붙일 유용한 정보들이 있다면 댓글로 알려주시면 배우겠습니다(__)