대시보드 없는 웹 분석 (하지만 3D 지구본은 있습니다)
요약
AI 에이전트가 소비하기 적합하도록 설계된 쿠키 없는(cookieless) 웹 분석 도구 'vigie'를 소개합니다. 대시보드 대신 CLI와 JSON API를 통해 기계 판독 가능한 데이터를 제공하며, 단일 300KB 바이너리로 동작하는 경량화된 구조가 특징입니다.
핵심 포인트
- AI 에이전트 중심의 기계 판독 가능한 JSON/CLI 인터페이스 제공
- 쿠키를 사용하지 않는 개인정보 보호 중심의 데이터 수집 방식
- MFL 언어로 작성된 300KB 단일 바이너리의 초경량 설계
- 3D 지구본 시각화 및 독립된 HTML 아티팩트 생성 기능
저는 vigie를 만들었습니다. 이는 차트를 바라보는 사람이 아닌, AI 에이전트가 주요 소비자(consumer)인 쿠키 없는 (cookieless) 웹 분석 도구입니다.
전제 조건
모든 개인정보 보호 우선 분석 도구(Plausible, Fathom, Rybbit)는 사람이 대시보드에 로그인한다는 것을 가정합니다. 하지만 제 팀은 에이전트들입니다. 그들은 코드를 작성하고, 이메일을 보내고, 이슈(issue)를 등록합니다. 그들에게는 쿼리(query)하고 실행할 수 있는 분석 데이터가 필요합니다. 즉, stdout 상의 JSON, 의미론적 종료 코드(semantic exit codes), 기계 판독 가능한 API가 필요합니다.
vigie stats overview --site example.com --since 7d
# {"ok":true,"data":{"pageviews":1234,"visitors":410,"bounce_rate_pct":38,...}}
vigie stats cities --site example.com # 도시 단위의 지리 정보 + 좌표
...
사람이 확인해야 할 때
대시보드는 하나의 **아티팩트(artifact)**입니다: vigie snapshot --publish 명령은 모든 지표(여정, 채널, 히트맵, vitals, 에러, 도시 단위 지리 정보 등 22개 섹션)를 하나의 독립된 HTML 페이지로 렌더링하여 아티팩트 호스트에 게시합니다. 타이머에 따라 재생성되므로 데이터가 오래되지 않으며, 실행할 프론트엔드 서버도 필요 없습니다. 여기에 데이터가 가득 찬 데모 보고서가 있습니다 (합성 데이터, 라벨링됨).
그리고 한 가지 사치스러운 기능: 여러분의 트래픽을 살아있는 3D 지구본으로 보여줍니다. 직접 구현한 canvas 수학, 도시 단위의 점(dots)으로 구성되며, 라이브 피드로부터 스스로를 다시 그립니다. JS 프레임워크는 전혀 사용하지 않았습니다.
흥미로운 제약 사항들
- 구조적으로 쿠키 없음 (Cookieless by construction): 방문자 =
sha256(secret + day + site + ip + ua), 매일 솔트(salt) 로테이션, 원본 IP는 절대 저장되지 않음. 동의(consent)할 것이 아무것도 없습니다. - 에이전트 또한 사용자임:
vigie track --name deploy --actor ci는 서버 측 이벤트를 기록합니다. 즉, 여러분의 cron job은 일급 분석 스트림(first-class analytics stream)입니다. - 약 300 KB의 바이너리 하나: (HTTP 수집 + SQLite + 통계 엔진 + 지구본 렌더러 + CLI)로 구성되며, MFL로 작성되었습니다. Node/ClickHouse/Docker가 필요 없습니다.
- SaaS 없는 지리 정보 (Geo without a SaaS): MFL로 처음부터 작성된 MaxMind-DB (.mmdb) 리더를 통해 DB-IP City Lite (CC BY)를 읽습니다. 바이너리 트리 탐색(binary tree walk)과 데이터 섹션 디코더를 위해 약 300줄의 코드가 사용되었습니다.
한 에이전트가 이 모든 것을 단 하루 만에 구축했으며, 그 과정에서 세 가지 컴파일러 버그를 발견했습니다. 여기에는 C 트리그래프 (trigraph) 처리 과정에서 문자열 리터럴 (string literals)이 조용히 손상되는 문제도 포함되었습니다 (??가 지구본 JavaScript에서 ^로 변하여, 세 단계 떨어진 곳에서 브라우저 구문 오류 (SyntaxError)로 나타남).
전체 이야기: https://blog.intrane.fr/analytics-with-no-dashboard
리포지토리 (MIT): https://github.com/javimosch/vigie
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기