원문 캡처 · privatrak.com
원문 캡처 · privatrak.com

쿠키 없는 분석 도구 Privatrak은 서버의 날짜 경계가 방문자 현지 시각과 맞지 않아 미국 방문자 일부를 매일 저녁 중복 집계했다. 회사는 프로젝트별 시간대를 도입해 방문자 식별 키 교체 시각과 일별 보고서 구간을 같은 기준으로 계산하도록 바꿨다.

Privatrak은 기기 쿠키를 저장하지 않고, 각 요청에 이미 포함된 IP 주소·브라우저·사이트 정보를 서버에서 조합해 방문자 식별자를 만든다.

visitor_id = HMAC(daily_key, IP address + browser + site)

원시 IP 주소나 브라우저 문자열은 보관하지 않고 해시만 사용한다. 매일 바뀌는 daily_key는 식별자가 장기간 유지되는 지문이 되지 않도록 한다. 하지만 Privatrak은 날짜가 바뀌는 시각을 UTC 자정으로 정했고, 이 시각은 미국 동부에서 오후 7~8시, 로스앤젤레스에서 오후 4~5시였다. 저녁에 페이지를 보고 잠시 자리를 비운 뒤 돌아온 방문자는 키 교체 전후로 서로 다른 사람처럼 집계될 수 있었다.

회사는 미국 테스터의 사례에서 집계 차이가 컸고 전환 퍼널 수치도 개선됐다고 밝혔다. 다만 차이가 얼마나 발생하는지는 방문자가 사이트에 머무는 시간, 같은 저녁에 다시 방문하는 비율, 트래픽이 몰리는 시각에 따라 달라 구체적인 비율을 제시할 수 없다고 설명했다.

영향은 날짜 경계에서 멀리 떨어진 시간대의 방문자가 있을 때 커진다. 방문자가 주로 한 지역에 있다면 해당 지역 시간대를 선택할 수 있다. 전 세계 방문자를 상대하는 사이트는 어느 한 지역의 저녁과 날짜 경계가 겹칠 수 있으므로, 트래픽이 가장 적은 시각에 날짜를 나누는 편이 낫다고 Privatrak은 설명했다.

문제는 방문자 식별에만 있지 않았다. 보고서의 일별 집계도 UTC 자정을 기준으로 별도로 계산했다. 뉴욕 프로젝트에서 ‘화요일’로 표시된 막대에는 실제로 월요일 오후 7시부터 화요일 오후 7시까지의 데이터가 담겼다. 따라서 방문자 수뿐 아니라 보고서의 날짜 구간도 현지 시각과 어긋났다.

Privatrak은 프로젝트마다 시간대를 지정하고, 그 설정 하나로 식별 키 교체 시점과 일별 집계 구간을 함께 결정하도록 수정했다. 이미 집계한 날짜의 원시 행은 개인정보 보호를 위해 삭제하므로 시간대를 바꿔도 과거 데이터를 새 경계로 다시 계산할 수 없다. 시간대 변경은 이후부터 적용되며, 변경 뒤 첫날은 24시간보다 길거나 짧을 수 있다.

일광 절약 시간제에 따라 하루는 23시간 또는 25시간이 될 수 있다. 시계가 뒤로 가는 날의 시간별 차트에는 25개 구간이, 앞으로 가는 날에는 23개 구간이 표시된다. Privatrak은 각 구간에 해당 시점의 UTC 오프셋을 붙여 실제 한 시간마다 하나의 구간을 표시한다고 밝혔다.

Privatrak은 같은 문제가 UTC 자정에 초기화되는 일일 할당량·요청 제한, 연속 기록과 일일 목표, 대시보드의 ‘오늘’, 일일 예산과 청구 기간, 예약 발송과 크론 작업, 일정에 따라 바뀌는 식별자에도 생길 수 있다고 지적했다. 날짜를 계산하거나 자정에 초기화하는 코드를 만들 때는 어느 시간대의 자정을 기준으로 하는지 먼저 정해야 한다고 덧붙였다.