- 앱에 로케이션 관련 로직을 넣는 예
- 지역에 따라 앱의 언어 또는 통화를 설정하려는 경우
- 특정 국가의 사람들에게 할인을 제공하려는 경우
- 사용자에게 가장 가까운 위치를 표시해야 하는 스토어 로케이터가 있는 경우
- 날씨 앱이 모든 종류의 데이터를 제공하기 전에 위치에 의존하는 경우
- 법적 이유로 앱을 지오펜스 하려는 경우(예: 쿠키 배너)
- 몇 가지 공통된 테마가 있음
-
표시/사용자 경험: 위치 정보를 사용하여 사용자 경험을 개선하거나 간소화
-
기능/로직: 위치에 따라 애플리케이션의 비즈니스 로직이 변경
-
정책/컴플라이언스: 기능을 포함하거나 제외해야 하는 법적 요건이 있음
- 항상 명확하게 구분되는 것은 아님. 경우에 따라 중복되는 경우도 있지만, 잘못 입력하는 경우의 심각도가 다르기 때문에 이러한 구분을 염두에 두는 것이 중요
사용자 위치를 가져오는 방법
- 사용자에게 직접 위치를 물어보기
- 장점: 구현이 쉬움, 사용자가 정확한 정보를 제공하면 신뢰할 수 있음, 다양한 위치를 지원할 수 있음
- 단점: 사용자가 오타를 내거나 정보를 생략할 수 있음, 사용자가 거짓 정보를 제공할 수 있음
- 기기의 휴리스틱을 사용하기
- 현대 기기는 GPS, Wi-Fi 데이터, 셀 타워, IP 주소를 통해 위치 정보에 접근 가능
- 웹 개발자는 브라우저의 Geolocation API를 통해 사용자 위치에 접근 가능
- 단점: 사용자에게 위치 공유 허용을 요청해야 함, 사용자가 거부할 수 있음
- IP 주소를 사용하기
- IP 주소는 네트워크에서 기기를 고유하게 식별하고 위치를 지정하는 데 사용됨
- IP 주소의 각 숫자 청크는 넓은 범위에서 좁은 범위로 서브넷을 나타냄
- IP 주소만으로는 사용자 위치를 알기에 충분하지 않으므로 알려진 서브넷 위치 데이터베이스와 비교해야 함
- 엣지 컴퓨팅을 사용하기
- 사용자 요청을 가장 가까운 서버에서 실행하는 방식
- 사용자에게 허락을 구하거나 IP 주소를 조회할 필요 없이 위치 정보 제공 가능
- 단점: 실제 사용자 위치가 아니라 엣지 노드의 위치임
사용자 위치를 신뢰할 수 없는 이유
- 사용자를 신뢰할 수 없음
- 사용자가 항상 정직하게 실제 위치를 입력한다고 보장할 수 없음
- 실수로 잘못된 정보를 입력할 수도 있음
- 기기를 신뢰할 수 없음
- 사용자가 Geolocation API 사용을 거부할 수 있음
- Geolocation API 정보를 브라우저 설정에서 사용자가 변경할 수 있음
- IP 주소를 신뢰할 수 없음
- 사용자가 VPN을 통해 요청을 라우팅할 수 있음
- VPN의 IP 주소만 볼 수 있고 사용자의 실제 IP는 알 수 없음
- 엣지 컴퓨팅을 신뢰할 수 없음
- 엣지 노드의 위치 정보이므로 실제 사용자 위치와 다를 수 있음
- VPN 사용 시 원래 IP 주소에 접근할 수 없음
그럼 우리는 어떻게 해야할까 ?
- 위치 정보를 얻는 방법에는 여러 가지가 있지만, 그 중 어느 것도 완전히 신뢰할 수 있는 방법은 없음
- 그렇다고 포기해야 할까? No! 더 나은 정보를 얻고 대비할 수 있음
예제: 콘텐츠 번역
- 영어로 작성되었지만 다른 언어도 지원하는 웹사이트가 있다고 가정
- 사용자의 현지 언어를 로드하여 사용자 환경을 개선하고 싶음
- 네덜란드어(플랑드르어), 프랑스어, 독일어를 사용하는 벨기에의 사용자는 어떻게 처리해야 할까?
- 사용자가 웹사이트를 요청
- 엣지 컴퓨팅을 통해 벨기에에서 온 요청임을 확인
- HTTP 쿠키에서 언어 기본 설정을 찾음
- 쿠키가 있으면 기본 설정 언어 사용
- 쿠키가 없으면 영어 또는 네덜란드어 버전 사용
- 웹사이트에서 사용자에게 지원되는 언어 목록 제공
- 사용자가 언어 기본 설정을 선택하면 쿠키에 저장
- 이 시나리오에서는 사용자 경험을 개선하기 위해 엣지 컴퓨팅과 사용자 보고를 결합하여 위치 정보를 얻음
- Geolocation API를 사용할 필요는 없어 보임
- 잘못된 언어가 표시될 위험은 있지만 비용은 낮음
- 위치 정보가 잘못되었거나 누락되어도 웹사이트는 작동함
- 업데이트: 클라이언트의 선호 언어와 로케일을 나타내는 Accept-Language 헤더도 이용 가능
예제: 날씨 앱
- 위치 기반으로 날씨 정보를 보여주는 애플리케이션이 있음
- 이 경우 앱이 작동하려면 위치 정보가 필요함. 정보가 없다면 어떻게 날씨를 보여줄 수 있을까?
- 이 시나리오에서는 첫 로드 시 사용자의 위치를 가정해도 안전함
- 엣지 컴퓨팅이나 IP 주소에서 해당 정보를 가져와 (우리가 생각한) 사용자의 지역 날씨를 보여줄 수 있음
- 또한 웹사이트의 주요 초점이 위치에 있기 때문에 Geolocation API를 사용하여 더 정확한 데이터를 요청할 수 있음
- 사용자가 다른 위치의 정보를 원할 경우를 대비해 유연한 사용자 리포트 옵션도 제공해야 함
- 이를 위해 가능한 한 자세한 위치 정보를 자동 완성하는 검색 입력 필드를 제공할 수 있음
- 향후 방문 처리 방식은 다양할 수 있음. 항상 "로컬" 날씨를 기본값으로 설정하거나 이전 방문에서의 위치를 기억
- 사용자가 웹사이트를 요청
- 첫 요청 시 엣지 컴퓨팅이나 IP 주소로 위치 정보 추정하여 앱 시작
- 첫 클라이언트 로드 시 Geolocation API 실행하여 정보 업데이트
- 향후 로드를 위해 쿠키에 위치 정보 저장 가능
- 다른 위치 검색을 위해 자동 완성되는 유연한 입력 제공
- 여기서 중요한 점은 앱이 실제로 사용자가 어디에 있는지 신경 쓰지 않는다는 것임
- 그냥 위치만 있으면 됨
- 사용자가 보고한 위치(검색)가 쿠키, 엣지 컴퓨팅, IP 주소에서 찾은 위치보다 우선함
- 날씨가 매일 변하기 때문에 캐싱 전략과 앱을 주로 서버 렌더링할지 클라이언트 렌더링할지도 고려해 볼 만함
예제: 매장 위치 찾기
- 여러 위치에 실제 매장을 운영하고 있다고 가정
- 제품 카탈로그와 재고를 온라인으로 보여줄 수 있지만, 매장 내 재고에 대한 최신 정보를 제공하는 것이 좋은 방법임
- 이를 위해서는 어떤 매장의 재고를 보여줘야 할지 알아야 하며, 최상의 사용자 경험을 위해서는 사용자에게 가장 가까운 매장이어야 함
- 다시 한번, 엣지 컴퓨팅이나 IP 주소를 사용하여 사용자의 위치를 예측하는 것이 타당함
- 그런 다음 사용자가 위치 정보를 입력할 수 있는 유연한 입력을 제공하되, 자동 완성은 근접성에 따라 정렬된 매장 목록으로 제한해야 함
- Geolocation API를 실행하는 것도 좋음
- 이 예시와 이전 예시의 차이점은 사이트의 주요 목적이 위치에 의존하지 않는다는 것임
- 따라서 사용자가 위치 의존적인 기능과 상호 작용할 때까지 기다려야
- 즉, 사용자가 매장 위치 찾기 필드에 초점을 맞출 때만 위치를 요청해야 함
예제: 지역별 가격 차등
- 이것은 조금 까다로운 주제인데, 사용자의 위치에 따라 다른 가격을 청구하려면 어떻게 해야 할까?
- 예를 들어, 일부 항공사와 호텔은 한 지역에서 예약하는 사용자에게 다른 지역보다 더 높은 가격을 제시하는 것으로 알려져 있음
- 윤리적인 문제는 차치하고, 이것은 수익성에 관한 질문이므로 매우 큰 영향을 미침
- 따라서 사용자가 사용자 보고 위치 정보를 통해 쉽게 가격을 변경할 수 있도록 허용하고 싶지는 않을 것임
- 이 경우에는 아마도 엣지 컴퓨팅이나 IP 주소만 사용할 것임
- 사용자가 VPN을 사용하여 이를 우회할 수 있지만 할 수 있는 최선의 방법일 것임
- 사기꾼을 피하는 것에 대해 정말 걱정된다면 Akamai의 향상된 프록시 감지 기능을 사용하여 VPN 사용자의 요청을 차단하려고 할 수 있음
- 그러나 그렇게 하면 할인된 판매 대신 판매 자체가 이루어지지 않을 수 있음. 선택은 당신의 몫
예제: 쿠키 배너
- 이 마지막 예시는 법적 준수에 더 중점을 두고 있으므로 작은 면책 조항으로 시작하겠음: 나는 변호사가 아님!!!
- 이것은 가설적인 예시일 뿐이며 법적 조언으로 받아들여서는 안 됨
- 2016년 유럽연합은 일반 데이터 보호 규정(GDPR)을 통과시켰음
- 이는 EU 내 인터넷 사용자의 프라이버시를 보호하는 법률로, 회사가 EU 외부에 있더라도 EU 내 개인에게 상품이나 서비스를 제공하는 회사에 적용됨
- 웹사이트 소유자에 대한 많은 요구 사항이 있지만, 내가 주목할 것은 우리가 지금 온라인에서 어디에서나 볼 수 있는 쿠키 배너의 폐해임
- 개인정보 보호 문제, 쿠키 배너가 옳은지 그른지, 그것의 효과 또는 비효과, 더 나은 접근 방식이 있는지에 대한 논의는 하지 않겠음
- 대신 법적으로 필요한 경우에만 쿠키 배너를 표시하고 그렇지 않은 경우에는 피하는 것이 좋다고 말하겠음
- 다시 한번, 사용자의 위치를 아는 것은 매우 중요함
- 이것은 이전 사례와 매우 유사하며 구현 또한 유사함. 주요 차이점은 잘못될 경우의 심각성이며, 따라서 올바르게 수행하기 위한 노력의 수준임
- 쿠키 배너는 법률과 사용자 위치가 웹사이트에 어떤 영향을 미칠 수 있는지에 대한 가장 널리 퍼진 예시일 수 있지만, 가장 강력한 예시를 찾고 있다면 아마도 중국의 방화벽일 것임
결론
- 사용자 위치 결정에는 정답이 없음
- 시나리오에 따라 사용자 리포팅, 기기 휴리스틱, 엣지 컴퓨팅, IP 주소를 조합하여 접근해야 함
- 중요한 것들
- 사용자의 위치가 필요한가, 아니면 그냥 아무 위치나 필요한가?
- 데이터는 얼마나 정확해야 하는가?
- 사용자 위치가 위조되어도 괜찮은가?
- 또한 법적 준수, 규정, 기능성, 95%의 신뢰성으로 괜찮은지도 고려해야 함
- 법적 이유로 위치 로직을 사용한다면 자신을 보호하기 위한 조치를 취하는 것이 좋음
- CCPA, GDPR 등의 데이터 개인 정보 보호법 준수