안녕하세요. 박세계입니다.
본 글은 개발자를 위한 글임을 미리 밝힙니다.
서비스를 만들때 접속기기의 국가를 알아야 하는 경우가 있습니다. 방법은 크게 세가지 입니다.
종합해보면 특별한 경우가 아닌 이상 '1. 접속 IP로 IP Database 조회' 방법이 가장 무난한 걸 알 수 있습니다. 보통 바로 적용이 가능하며, 비교적 쉽고 정확하기 때문입니다. 어차피 100%의 정확도를 보장하는 방법은 없습니다.
국가를 알아야 하는 목적은 다시 크게 둘로 나뉩니다. 둘다 필요한 경우도 많습니다.
'1. 국가별 통계 필요'의 경우는 개별 IP Database(이하 IP Table)를 관리하는 수 밖에 없습니다. IP 저장시 IP Table과 JOIN 하여 국가코드까지 저장하는게 보통입니다.
IP Range와 국가코드가 매칭되있는 무료 Database 중 다음 서비스를 추천합니다. 요령껏 주기적으로 IP Database를 다운받아 자신이 관리하는 IP Table을 업데이트 해야합니다.
'2. 국가별 서비스 제한'을 위한 방법은 좀 다릅니다. 다음 두가지 방법을 통해 적용 가능합니다. 두 방법을 혼용해도 좋습니다.
IP와 매칭되는 국가 정보는 생각보다 자주 갱신되기 때문에 주기적으로 업데이트 해주지 않으면 나중에는 계속 틀린 정보를 받게 됩니다. 즉, 반드시 배치를 통해 관리해야 하는 번거로움이 있습니다.
국가별 서비스 제한등 특정 시점에서만 조회하면 되거나, 트래픽이 적은 서비스의 경우 다음 API 사용을 추천합니다.
꼭 서버에서 호출하지 않아도 되는 장점도 있습니다. http://ip2c.org/self로 호출하면 Wifi에 접속된 모바일 기기에서도 내부 아이피가 아닌 외부로 나가는 공식 아이피와 매칭되는 국가코드를 알려줍니다. 별도 IP Table을 관리하는게 생각보다 쉽지 않은데, 이 API를 활용해봐도 좋을거 같습니다.
해당 API가 제대로 동작하지 않는 경우에 대비하려면 결국 내부적으로 IP Table을 관리해야 하는게 맞긴 하지만 여전히 활용도가 높은거 같아 소개합니다.
감사합니다.