프로젝트 소개
Edgemetry는 Cloudflare 엣지에서 완전히 실행되는 셀프 호스팅 웹 분석 솔루션을 제공합니다. 단일 Cloudflare Worker와 하나의 D1 데이터베이스가 원시 이벤트와 집계된 롤업 데이터를 저장하므로, 추가적인 서버나 컨테이너 인프라가 필요하지 않습니다.
추적 스크립트는 약 2.1KB이며, 측정 대상 사이트와 동일한 도메인에서 제공됩니다. 쿠키를 설정하거나 localStorage를 사용하지 않으며, 핑거프린팅을 수행하지 않습니다. 방문자 식별은 IP 주소와 사용자 에이전트의 일일 솔트 해시(daily-salted hash)를 기반으로 하며, 원시 이벤트 행은 24~48시간 후에 폐기되고 집계된 수치만 남습니다. 개인 데이터가 저장되지 않으므로, 동의 배너 없이도 GDPR 요구 사항을 준수합니다.
대시보드에 표시되는 지표에는 방문자 수, 페이지뷰, 방문당 조회수, 이탈률 및 평균 체류 시간이 포함됩니다. 각 지표는 스파크라인과 이전 기간과의 비교 수치와 함께 표시됩니다. 인터페이스는 적층형 필터를 지원하여, 특정 행을 클릭하면 모든 패널이 동시에 좁혀지며 페이지, 진입 페이지, 종료 페이지, 추천인, 국가, 브라우저, 운영 체제, 장치, 화면 크기 및 UTM 태그별로 세부 분석이 가능합니다. 실제 단계 구분도(choropleth map)가 Worker에서 직접 렌더링되며, 라이브 카운터를 통해 현재 온라인 방문자, 최근 30분간의 분 단위 트래픽, 현재 읽고 있는 페이지 피드를 확인할 수 있습니다.
단일 배포에서 여러 사이트를 관리할 수 있으며, 각 사이트는 고유한 스니펫과 격리된 트래픽 데이터를 가집니다. 사용자 역할에는 소유자(전체 관리)와 뷰어(명시적으로 허용된 사이트에 대한 읽기 전용 액세스)가 있습니다. 권한은 서버 측에서 강제 적용되며, 소유자는 자신의 계정을 강등하거나 삭제할 수 없어 실수로 인한 잠금 상태를 방지합니다.
아키텍처는 Cloudflare의 무료 티어 제한에 최적화되어 있습니다. 원시 이벤트는 인덱스 없이 시간별 테이블에 기록되어 페이지뷰당 한 번의 행 쓰기 비용이 발생합니다. 일일 롤업과 통계 큐브(stats cube)가 필터링된 쿼리를 위한 집계 데이터를 제공하여 쓰기 비용을 페이지뷰당 약 1.2행으로 유지합니다. 읽기 작업은 대시보드 로드 시 한 번만 스캔하고 모든 패널의 결과를 그룹화하여 최적화함으로써 D1 읽기 횟수를 획기적으로 줄였습니다. 무료 티어에서는 하루 약 20,000회 방문을 안정적으로 지원하며, 그 이상은 Worker 플랜을 업그레이드하여 모든 제한을 해제할 수 있습니다.
배포는 D1 데이터베이스 생성, Worker 구성 및 커스텀 도메인 설정을 수행하는 원클릭 버튼을 통해 간소화되었습니다. 배포 후 사용자는 설정 양식을 통해 인스턴스를 소유하고, 제공된 스니펫을 사이트의 head 부분에 추가하면 대시보드에 데이터가 자동으로 채워집니다. 고급 사용자는 Wrangler를 사용하여 명령줄에서 배포할 수도 있습니다.
wrangler.jsonc의 구성 변수를 통해 시간별 데이터 보관 기간 조정, 필터 큐브 활성화/비활성화, 비밀번호 해싱을 위한 PBKDF2 반복 횟수 설정, 자동 업데이트 확인 토글 등이 가능합니다. 시스템에는 시간별 및 일별 롤업을 위한 cron 작업이 포함되어 있으며, 실행을 놓친 경우 스스로 복구하는 기능을 갖추고 있습니다.
실제 배포 없이도 모든 기능을 확인할 수 있도록 합성 백엔드에서 대시보드를 실행하는 라이브 데모가 제공됩니다. 자동화된 테스트를 통해 실제 Worker와 모의(mock) 구현 간의 API 일관성을 검증합니다.
종합적으로 Edgemetry는 최소한의 비용과 인프라로 개인 Cloudflare 계정에서 운영할 수 있는, 개인정보를 존중하고 오버헤드가 적은 분석 플랫폼을 제공합니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.