IP 해시 기반 방문자 트래킹으로 엔트리 포스트 구조 설계 가이드
IP 해시로 하루 단위 방문자를 정의하고, 첫 유입 페이지를 함께 저장하는 VisitorStorage 설계를 소개합니다. 간단한 구조로도 관리용 대시보드에 쓸만한 데이터를 모으는 방법을 다룹니다.
독자는 이 글을 통해 IP 해시 기반으로 방문자를 정의하고 엔트리 포스트를 기록하는 방법을 빠르게 이해하며, 블로그 운영에 필요한 최소한의 데이터를 직접 수집하는 구조를 설계할 수 있습니다.
![]()
방문자 트래킹이 필요한 순간
블로그를 오래 운영하다 보면 단순한 페이지뷰 숫자만으로는 부족한 순간이 옵니다. 예를 들어 다음과 같은 질문에 답하고 싶을 수 있습니다.
- 오늘 “실제 방문자” 가 몇 명이나 왔는가?
- 가장 많이 입구 역할을 하는 포스트(엔트리) 는 무엇인가?
- 특정 글이 SNS나 검색에서 유입되는지 감을 잡을 수 있는가?
외부 분석 도구를 붙이면 어느 정도 답을 얻을 수 있지만, 가끔은 내가 원하는 구조로 데이터가 쌓이게 만들고 싶을 때가 있습니다. 이 글에서는 그런 상황을 전제로, 비교적 단순한 방법으로 방문자를 세는 구조를 정리해 봅니다.
IP 기준 방문자 정의하기
먼저 “방문자”를 어떻게 정의할지를 정해야 합니다. 흔히 생각해볼 수 있는 기준은 세 가지 정도입니다.
| 기준 | 장점 | 한계 |
|---|---|---|
| IP 주소 | 구현이 간단하고 서버에서 바로 사용 가능 | 공유 IP, VPN 환경에서 여러 사용자가 섞임 |
| 쿠키/로컬스토리지 | 브라우저별로 비교적 정확한 방문자 식별 | 쿠키 삭제, 브라우저 변경 시 다른 사람으로 인식 |
| 로그인 사용자 | 가장 명확한 사용자 기준 | 로그인 기능이 없는 블로그에서는 적용 불가 |
이 글에서는 “IP 기준 + 하루” 를 방문자의 최소 단위로 잡습니다. 즉, 같은 날 같은 IP로 여러 번 접속해도 1명으로만 카운팅하는 방식입니다.
추가로, IP는 그대로 저장하지 않고 해시(예: SHA-256)로 변환해서 보관합니다. 이렇게 하면:
- 데이터베이스에는 실제 IP가 아닌 해시 값만 남고
- 같은 사용자인지만 판별할 수 있으며
- 개인 정보 보호 측면에서도 더 안전합니다.
주의: 해시를 쓰더라도 원 IP와 시간, 다른 데이터가 결합되면 개인을 유추할 수 있는 경우가 있습니다. 필요한 경우에 한해 최소한의 정보만 저장하는 것이 좋습니다.
VisitorStorage 설계 아이디어
이제 IP 해시와 날짜를 기준으로 방문자를 저장할 VisitorStorage 구조를 생각해 보겠습니다. 목표는 다음과 같습니다.
- 오늘 날짜에 대해
- 각 IP 해시가 이미 카운팅 되었는지 판단하고
- 처음 카운팅되는 시점에 어떤 페이지에서 들어왔는지(페이지 path)를 기록
이를 만족하는 가장 단순한 구조 중 하나는 “날짜별 테이블 또는 컬렉션”입니다.
데이터 구조 예시
의사 코드 수준으로 표현하면 다음과 비슷하게 설계할 수 있습니다.
VisitorStorage (예: visitor_logs)
- date (YYYY-MM-DD)
- ipHash (문자열)
- path (문자열, 첫 방문 시 페이지 path)
- createdAt (타임스탬프)