10P by xguru 2달전 | favorite | 댓글과 토론
  • 앱에 로케이션 관련 로직을 넣는 예
    • 지역에 따라 앱의 언어 또는 통화를 설정하려는 경우
    • 특정 국가의 사람들에게 할인을 제공하려는 경우
    • 사용자에게 가장 가까운 위치를 표시해야 하는 스토어 로케이터가 있는 경우
    • 날씨 앱이 모든 종류의 데이터를 제공하기 전에 위치에 의존하는 경우
    • 법적 이유로 앱을 지오펜스 하려는 경우(예: 쿠키 배너)
  • 몇 가지 공통된 테마가 있음
    • 표시/사용자 경험: 위치 정보를 사용하여 사용자 경험을 개선하거나 간소화
    • 기능/로직: 위치에 따라 애플리케이션의 비즈니스 로직이 변경
    • 정책/컴플라이언스: 기능을 포함하거나 제외해야 하는 법적 요건이 있음
  • 항상 명확하게 구분되는 것은 아님. 경우에 따라 중복되는 경우도 있지만, 잘못 입력하는 경우의 심각도가 다르기 때문에 이러한 구분을 염두에 두는 것이 중요

사용자 위치를 가져오는 방법

  • 사용자에게 직접 위치를 물어보기
    • 장점: 구현이 쉬움, 사용자가 정확한 정보를 제공하면 신뢰할 수 있음, 다양한 위치를 지원할 수 있음
    • 단점: 사용자가 오타를 내거나 정보를 생략할 수 있음, 사용자가 거짓 정보를 제공할 수 있음
  • 기기의 휴리스틱을 사용하기
    • 현대 기기는 GPS, Wi-Fi 데이터, 셀 타워, IP 주소를 통해 위치 정보에 접근 가능
    • 웹 개발자는 브라우저의 Geolocation API를 통해 사용자 위치에 접근 가능
    • 단점: 사용자에게 위치 공유 허용을 요청해야 함, 사용자가 거부할 수 있음
  • IP 주소를 사용하기
    • IP 주소는 네트워크에서 기기를 고유하게 식별하고 위치를 지정하는 데 사용됨
    • IP 주소의 각 숫자 청크는 넓은 범위에서 좁은 범위로 서브넷을 나타냄
    • IP 주소만으로는 사용자 위치를 알기에 충분하지 않으므로 알려진 서브넷 위치 데이터베이스와 비교해야 함
  • 엣지 컴퓨팅을 사용하기
    • 사용자 요청을 가장 가까운 서버에서 실행하는 방식
    • 사용자에게 허락을 구하거나 IP 주소를 조회할 필요 없이 위치 정보 제공 가능
    • 단점: 실제 사용자 위치가 아니라 엣지 노드의 위치임

사용자 위치를 신뢰할 수 없는 이유

  • 사용자를 신뢰할 수 없음
    • 사용자가 항상 정직하게 실제 위치를 입력한다고 보장할 수 없음
    • 실수로 잘못된 정보를 입력할 수도 있음
  • 기기를 신뢰할 수 없음
    • 사용자가 Geolocation API 사용을 거부할 수 있음
    • Geolocation API 정보를 브라우저 설정에서 사용자가 변경할 수 있음
  • IP 주소를 신뢰할 수 없음
    • 사용자가 VPN을 통해 요청을 라우팅할 수 있음
    • VPN의 IP 주소만 볼 수 있고 사용자의 실제 IP는 알 수 없음
  • 엣지 컴퓨팅을 신뢰할 수 없음
    • 엣지 노드의 위치 정보이므로 실제 사용자 위치와 다를 수 있음
    • VPN 사용 시 원래 IP 주소에 접근할 수 없음

그럼 우리는 어떻게 해야할까 ?

  • 위치 정보를 얻는 방법에는 여러 가지가 있지만, 그 중 어느 것도 완전히 신뢰할 수 있는 방법은 없음
  • 그렇다고 포기해야 할까? No! 더 나은 정보를 얻고 대비할 수 있음

예제: 콘텐츠 번역

  • 영어로 작성되었지만 다른 언어도 지원하는 웹사이트가 있다고 가정
  • 사용자의 현지 언어를 로드하여 사용자 환경을 개선하고 싶음
  • 네덜란드어(플랑드르어), 프랑스어, 독일어를 사용하는 벨기에의 사용자는 어떻게 처리해야 할까?
  1. 사용자가 웹사이트를 요청
  2. 엣지 컴퓨팅을 통해 벨기에에서 온 요청임을 확인
  3. HTTP 쿠키에서 언어 기본 설정을 찾음
  4. 쿠키가 있으면 기본 설정 언어 사용
  5. 쿠키가 없으면 영어 또는 네덜란드어 버전 사용
  6. 웹사이트에서 사용자에게 지원되는 언어 목록 제공
  7. 사용자가 언어 기본 설정을 선택하면 쿠키에 저장
  • 이 시나리오에서는 사용자 경험을 개선하기 위해 엣지 컴퓨팅과 사용자 보고를 결합하여 위치 정보를 얻음
    • Geolocation API를 사용할 필요는 없어 보임
    • 잘못된 언어가 표시될 위험은 있지만 비용은 낮음
    • 위치 정보가 잘못되었거나 누락되어도 웹사이트는 작동함
  • 업데이트: 클라이언트의 선호 언어와 로케일을 나타내는 Accept-Language 헤더도 이용 가능

예제: 날씨 앱

  • 위치 기반으로 날씨 정보를 보여주는 애플리케이션이 있음
    • 이 경우 앱이 작동하려면 위치 정보가 필요함. 정보가 없다면 어떻게 날씨를 보여줄 수 있을까?
  • 이 시나리오에서는 첫 로드 시 사용자의 위치를 가정해도 안전함
    • 엣지 컴퓨팅이나 IP 주소에서 해당 정보를 가져와 (우리가 생각한) 사용자의 지역 날씨를 보여줄 수 있음
    • 또한 웹사이트의 주요 초점이 위치에 있기 때문에 Geolocation API를 사용하여 더 정확한 데이터를 요청할 수 있음
    • 사용자가 다른 위치의 정보를 원할 경우를 대비해 유연한 사용자 리포트 옵션도 제공해야 함
    • 이를 위해 가능한 한 자세한 위치 정보를 자동 완성하는 검색 입력 필드를 제공할 수 있음
    • 향후 방문 처리 방식은 다양할 수 있음. 항상 "로컬" 날씨를 기본값으로 설정하거나 이전 방문에서의 위치를 기억
  1. 사용자가 웹사이트를 요청
  2. 첫 요청 시 엣지 컴퓨팅이나 IP 주소로 위치 정보 추정하여 앱 시작
  3. 첫 클라이언트 로드 시 Geolocation API 실행하여 정보 업데이트
  4. 향후 로드를 위해 쿠키에 위치 정보 저장 가능
  5. 다른 위치 검색을 위해 자동 완성되는 유연한 입력 제공
  • 여기서 중요한 점은 앱이 실제로 사용자가 어디에 있는지 신경 쓰지 않는다는 것임
    • 그냥 위치만 있으면 됨
    • 사용자가 보고한 위치(검색)가 쿠키, 엣지 컴퓨팅, IP 주소에서 찾은 위치보다 우선함
  • 날씨가 매일 변하기 때문에 캐싱 전략과 앱을 주로 서버 렌더링할지 클라이언트 렌더링할지도 고려해 볼 만함

예제: 매장 위치 찾기

  • 여러 위치에 실제 매장을 운영하고 있다고 가정
    • 제품 카탈로그와 재고를 온라인으로 보여줄 수 있지만, 매장 내 재고에 대한 최신 정보를 제공하는 것이 좋은 방법임
    • 이를 위해서는 어떤 매장의 재고를 보여줘야 할지 알아야 하며, 최상의 사용자 경험을 위해서는 사용자에게 가장 가까운 매장이어야 함
  • 다시 한번, 엣지 컴퓨팅이나 IP 주소를 사용하여 사용자의 위치를 예측하는 것이 타당함
    • 그런 다음 사용자가 위치 정보를 입력할 수 있는 유연한 입력을 제공하되, 자동 완성은 근접성에 따라 정렬된 매장 목록으로 제한해야 함
    • Geolocation API를 실행하는 것도 좋음
  • 이 예시와 이전 예시의 차이점은 사이트의 주요 목적이 위치에 의존하지 않는다는 것임
    • 따라서 사용자가 위치 의존적인 기능과 상호 작용할 때까지 기다려야
    • 즉, 사용자가 매장 위치 찾기 필드에 초점을 맞출 때만 위치를 요청해야 함

예제: 지역별 가격 차등

  • 이것은 조금 까다로운 주제인데, 사용자의 위치에 따라 다른 가격을 청구하려면 어떻게 해야 할까?
  • 예를 들어, 일부 항공사와 호텔은 한 지역에서 예약하는 사용자에게 다른 지역보다 더 높은 가격을 제시하는 것으로 알려져 있음
  • 윤리적인 문제는 차치하고, 이것은 수익성에 관한 질문이므로 매우 큰 영향을 미침
  • 따라서 사용자가 사용자 보고 위치 정보를 통해 쉽게 가격을 변경할 수 있도록 허용하고 싶지는 않을 것임
  • 이 경우에는 아마도 엣지 컴퓨팅이나 IP 주소만 사용할 것임
    • 사용자가 VPN을 사용하여 이를 우회할 수 있지만 할 수 있는 최선의 방법일 것임
    • 사기꾼을 피하는 것에 대해 정말 걱정된다면 Akamai의 향상된 프록시 감지 기능을 사용하여 VPN 사용자의 요청을 차단하려고 할 수 있음
    • 그러나 그렇게 하면 할인된 판매 대신 판매 자체가 이루어지지 않을 수 있음. 선택은 당신의 몫

예제: 쿠키 배너

  • 이 마지막 예시는 법적 준수에 더 중점을 두고 있으므로 작은 면책 조항으로 시작하겠음: 나는 변호사가 아님!!!
    • 이것은 가설적인 예시일 뿐이며 법적 조언으로 받아들여서는 안 됨
  • 2016년 유럽연합은 일반 데이터 보호 규정(GDPR)을 통과시켰음
    • 이는 EU 내 인터넷 사용자의 프라이버시를 보호하는 법률로, 회사가 EU 외부에 있더라도 EU 내 개인에게 상품이나 서비스를 제공하는 회사에 적용됨
  • 웹사이트 소유자에 대한 많은 요구 사항이 있지만, 내가 주목할 것은 우리가 지금 온라인에서 어디에서나 볼 수 있는 쿠키 배너의 폐해임
    • 개인정보 보호 문제, 쿠키 배너가 옳은지 그른지, 그것의 효과 또는 비효과, 더 나은 접근 방식이 있는지에 대한 논의는 하지 않겠음
    • 대신 법적으로 필요한 경우에만 쿠키 배너를 표시하고 그렇지 않은 경우에는 피하는 것이 좋다고 말하겠음
  • 다시 한번, 사용자의 위치를 아는 것은 매우 중요함
    • 이것은 이전 사례와 매우 유사하며 구현 또한 유사함. 주요 차이점은 잘못될 경우의 심각성이며, 따라서 올바르게 수행하기 위한 노력의 수준임
  • 쿠키 배너는 법률과 사용자 위치가 웹사이트에 어떤 영향을 미칠 수 있는지에 대한 가장 널리 퍼진 예시일 수 있지만, 가장 강력한 예시를 찾고 있다면 아마도 중국의 방화벽일 것임

결론

  • 사용자 위치 결정에는 정답이 없음
    • 시나리오에 따라 사용자 리포팅, 기기 휴리스틱, 엣지 컴퓨팅, IP 주소를 조합하여 접근해야 함
  • 중요한 것들
    • 사용자의 위치가 필요한가, 아니면 그냥 아무 위치나 필요한가?
    • 데이터는 얼마나 정확해야 하는가?
    • 사용자 위치가 위조되어도 괜찮은가?
  • 또한 법적 준수, 규정, 기능성, 95%의 신뢰성으로 괜찮은지도 고려해야 함
  • 법적 이유로 위치 로직을 사용한다면 자신을 보호하기 위한 조치를 취하는 것이 좋음
  • CCPA, GDPR 등의 데이터 개인 정보 보호법 준수