1. 개발 이유

어느날 다른 분께서 작성하는 개발 블로그를 보았습니다. 티스토리였는데 누적 방문자수와 오늘 방문한 사람 수가 보였습니다. 너무 탐났습니다. 저도 방문자 수 뷰를 가지고 싶어요.. 그리고 블로그가 너무 정적으로 보여서 다른 사람들이 보기에 멈춰있는 블로그처럼 보일 것 같다는 생각이 들었습니다. 그래서 블로그에 약간의 동적인 생기를 불어 넣어주고자 방문자 수 저장 및 조회 기능을 구현하기로 했습니다.

그리고 지금까지 이 블로그는 제가 쓰는 게시물과 조회수로만 데이터가 생성되었는데, 이제 사용자 접속 데이터를 합법적인 수준에서 수집하고 가공하여 새로운 의미있는 기능 혹은 통계를 집계해보고 싶었습니다.

<br>

2. 방문자 수 카운트 기능 정의

우선 방문자의 최소 단위 부터 정의해야 합니다. 크게 두 가지 범위로 생각해볼 수 있는데, 첫 번째는 불특정 다수가 페이지에 접근할 때마다 측정하는 방법입니다. 두 번째 방법은 순수 방문자 수를 카운트 하는 방법입니다.

이를 조금 전문 용어로 PV, UV라고 부릅니다. PV는 Page Views로 한 페이지가 몇 번 요청 되었는지를 세는 단위입니다. 그리고 UV는 Unique Visitors는 순 방문자이고, 한 사용자가 여러 요청을 보내도 하나의 방문으로 기록하는 방법입니다.

저는 PV보단 UV가 더 의미있는 방문이라고 생각했고, 이를 순수 방문자를 식별하기 위한 요소를 생각해보았습니다. 하지만 사실 인터넷에서는 정말 순수한 방문자를 식별할 수 없습니다. 같은 사람이더라도 여러 기기를 가지고 있고, 장소 또한 시시각각 변화하기 때문입니다. 이런 한계와 절충하여, 저는 IP와 사용 브라우저를 기준으로 방문자의 최소 단위를 정했습니다.

이번 기능은 프론트에서 할 일이 많이 없고, 백엔드의 할 일이 많습니다. 어떻게 사용자의 정보를 수집, 관리할 것인지, 그리고 이로 인한 속도 저하는 발생할 것인지 여러 고민들을 해보겠습니다.

방문자 최소 단위

정의: IP와 사용 브라우저가 같은 사용자

<br>

3. 방문자 수 뷰 디자인

스트릭은 고민을 많이 했었지만, 이번에는 생각보다 금방 나왔습니다.

1차 디자인입니다. 최근글 위에 있었지만 위치가 조금 들떠있는 느낌이 납니다.


2차 디자인이자 최종 디자인 입니다. 기존에 있던 Welcome to my blog라는 문구를 지우고 방문자 수 뷰를 만들었습니다. 그리고 테두리를 없애 깔끔하게 만들었습니다.

<br>

4. 개인정보 수집의 민감성과 위험성 관리

더 자세하게 찾아보니, IP를 수집하고 저장하는 것은 개인정보 수집으로 불법이라는 이야기가 있었습니다. 따라서 이 기능에서 IP가 의미하고 있는 것이 무엇인지 생각해보기로 했습니다. 여기서 IP는 방문자를 식별(사용자를 구분함을 의미)하는 것입니다. 따라서 IP와 User-Agent를 이용해 단방향 암호화로 hashcode를 재생성하면 사용자의 IP를 직접적으로 수집하지 않고 복호화가 불가한 상태로 방문자를 식별할 수 있습니다. 이 방법도 추후 문제가 있다면 기능 롤백 혹은 문제가 되지 않는 다른 방법을 강구해보겠습니다.

그리고 지금은 방문자 수 기능을 핵심적으로 만들고 있지만, 추후 통계 기능을 만들어보고 싶단 생각을 블로그를 만들때부터 하고 있었기 때문에 방문자 수만 카운트 하는 것이 아니라 여러 정보를 더 수집하여 저장할 계획입니다.

<br>

마무리

이렇게 기능에 대한 대략적인 정의와 구현 방안이 정해졌습니다! 다음편은 조금 더 세세한 기능 정의로 돌아오겠습니다! 긴 글 읽어주셔서 감사합니다!