메뉴

지역번호와 주소 매칭: 어디까지 믿을 수 있나

지역번호로 사용자의 거주지를 짐작할 수 있는지, 전화번호와 주소가 어긋날 때 무엇을 확인해야 하는지 시험 관점에서 정리합니다.

게시일

  • 전화번호
  • 주소 검사

지역번호는 한때 통화권을 나타내는 값이었지만, 오늘날에는 통화권과 거주지가 거의 연결되지 않습니다. 번호를 그대로 옮길 수 있게 되었고, 휴대전화 번호에는 지역 정보가 아예 없기 때문입니다. 그래도 주소 데이터를 다루는 코드에는 지역번호를 지역 정보로 쓰는 가정이 남아 있는 경우가 많습니다.

지역번호로 거주지를 알 수 있나요?

알 수 없습니다. 유선 번호라면 개통 당시의 통화권을 어느 정도 반영하지만, 번호 이동이 일상이 된 뒤로는 그마저도 보장되지 않습니다. 같은 번호를 다른 도시로 옮겨 쓸 수 있고, 한 사람이 여러 번호를 가질 수도 있습니다.

휴대전화 번호는 처음부터 지역과 무관하게 배정됩니다. 그래서 지역번호를 근거로 주소를 추정하거나, 추정한 값으로 주소 입력을 대신 채우는 방식은 잘못된 결과를 만들기 쉽습니다.

예전에 쓰던 번호를 그대로 두고 이사한 사용자도 많습니다. 이 경우 번호는 옛 지역을 가리키지만 실제 거주지는 다른 곳이므로, 두 값을 맞춰 보는 검사는 정상 사용자를 의심 대상으로 만듭니다. 검사 결과를 남기더라도 사용자에게 불이익이 돌아가지 않는 형태로 남겨야 합니다.

번호를 주소의 대체 값으로 쓰는 설계도 위험합니다. 주소가 비어 있을 때 번호만 보고 지역을 채워 넣으면, 그 값이 확정된 것처럼 남아 이후 배송이나 세금 계산에 쓰입니다. 임시 값이라는 표시와 만료 조건이 없다면 이런 값은 곧 잘못된 사실로 굳습니다.

번호가 주소와 다르면 오류인가요?

오류가 아닙니다. 출장이 잦은 사용자, 이사를 앞둔 사용자, 회사 대표 번호를 적는 사용자 모두 번호와 주소가 다른 정상적인 경우입니다. 이 차이를 오류로 처리하면 멀쩡한 주문을 막게 됩니다.

대신 두 값을 각각 따로 검사하고, 서로 다르다는 사실만 기록해 두는 편이 좋습니다. 두 값이 다르면 확인이 필요하다는 신호로만 쓰고, 자동으로 거부하거나 한쪽을 다른 쪽에 맞춰 고치는 일은 피해야 합니다.

어긋난 값을 어디에 쓸 수 있나요?

주소가 비어 있을 때의 임시 보정값 정도로만 쓸 수 있습니다. 예를 들어 국가를 고르지 않은 입력에서 국가를 추정하는 데에는 쓸 수 있지만, 그 결과는 사용자가 확인해야 하는 제안이어야 합니다. 추정값을 확정값처럼 저장하면 나중에 바로잡기 어려워집니다.

위험 신호를 찾는 데 쓰는 방법도 있습니다. 같은 주소에 서로 다른 지역번호가 반복해서 붙는다든지, 짧은 시간에 여러 지역의 번호가 같은 계정에 나타난다든지 하는 패턴은 검토 대상이 될 수 있습니다. 다만 이런 판단은 단일 값이 아니라 여러 값의 조합으로 해야 합니다.

나라마다 다른 번호 형식

번호의 길이와 나누는 방식은 나라마다 다르고, 나라 코드를 붙이는 방식도 다릅니다. 국내 형식과 국제 형식을 한 열에 함께 저장하면 나중에 어느 형식인지 구분할 수 없게 됩니다. ISO 국가 코드에서 본 것처럼 국가 구분을 코드로 분리해 두면, 전화번호는 번호 자체만 저장하고 국가는 따로 두는 구조를 만들 수 있습니다.

주소와 마찬가지로 번호에도 표기 관행이 있습니다. 묶는 위치, 하이픈 사용 여부, 괄호 사용 여부가 제각각이므로 표시용 형식과 저장용 형식을 나누는 편이 안전합니다. 미국 주소 형식에서 지역 표기를 다룰 때와 같은 원칙입니다.

시험에서는 무엇을 확인해야 하나요?

번호와 주소가 어긋나는 정상 입력이 통과하는지 확인해야 합니다. 이 경우를 시험에 넣지 않으면, 어긋난 입력을 거부하는 코드가 조용히 들어가도 알아차리지 못합니다.

또한 국가를 바꿔 가며 같은 번호를 넣었을 때 형식 검사가 어떻게 반응하는지도 봐야 합니다. 국가 코드와 번호 국가가 불일치할 때 경고만 할지, 입력을 막을지, 아무 처리도 하지 않을지는 서비스 정책에 따라 다르므로 시험으로 그 결정을 고정해 두는 편이 좋습니다.

번호 형식이 바뀌는 경우도 시험에 넣습니다. 국가가 번호 체계를 개편하면 기존 검사가 옳은 번호를 거부할 수 있고, 개편 사실은 보통 사용자 문의로 먼저 드러납니다. 형식 검사를 지나치게 좁게 잡지 않는 것이 이런 상황을 견디는 방법입니다.

번호에 국가 코드가 포함되어 있는지 여부도 함께 저장하는 편이 좋습니다. 같은 번호라도 국가 코드가 붙은 값과 그렇지 않은 값은 해석이 달라지므로, 어느 형식인지 모르면 나중에 어느 국가로 걸어야 할지 판단할 수 없습니다.

랜덤 주소 생성기로 확인하기

랜덤 주소 생성기는 국가별 주소와 함께 그 지역 형식의 전화번호도 만들어 줍니다. 같은 국가를 여러 번 생성해 보면 번호 형식이 일정한지 확인할 수 있고, 국가를 바꾸면 형식이 어떻게 달라지는지도 비교할 수 있습니다.

생성되는 값은 시험용 합성 데이터입니다. 실제로 전화를 걸거나 배송에 사용할 수 없고, 거주 사실을 증명하는 자료로도 쓸 수 없습니다.

개발자를 위한 메모: 번호는 힌트로만 쓰기

  • 번호에서 국가나 지역을 추정한 값은 확정값이 아니라 제안으로 다룹니다. 사용자가 확인하지 않은 추정값을 저장하지 않습니다.
  • 국내 형식과 국제 형식을 따로 저장하고, 어느 형식인지 함께 기록합니다. 형식 정보가 없으면 나중에 해석할 수 없습니다.
  • 번호와 주소의 불일치는 경고로 처리하고, 주문을 막는 조건으로 쓰지 않습니다. 막아야 한다면 정책 결정을 문서로 남깁니다.
  • 번호 표시 문자열을 직접 만들어 붙이지 말고, 국가별 표시 규칙을 데이터로 두고 적용합니다.
  • 번호가 비어 있는 입력을 정상으로 취급합니다. 전화번호는 주소와 달리 필수가 아닌 서비스가 많습니다.
  • 시험에는 번호만 있고 주소가 없는 경우, 주소만 있고 번호가 없는 경우를 모두 넣습니다.

다음 단계

자기 코드에서 번호를 지역 정보로 쓰는 자리를 검색해 보고, 그 값이 확정값으로 저장되는지 확인하세요. 확정값으로 쓰이고 있다면 제안값으로 바꾸는 것만으로도 잘못된 주소가 굳는 일을 줄일 수 있습니다. 이어서 결제 주소 입력란 시험 항목에서 입력 단계에서 확인해야 할 목록을 점검해 보세요.

이어 읽기

랜덤 주소 생성기 관련 글