

서비스 로그를 수집해 AI 리포트와 커스텀 위젯을 자동으로 만들어주는 오픈소스 웹 분석 플랫폼입니다. FastAPI + InfluxDB 기반의 고성능 로그 수집/저장 구조를 설계하고, React 기반 대시보드와 AI 자동 분석 기능을 직접 개발했습니다. 플러그인 구조, 위젯 시스템, 실시간 롤업 파이프라인을 설계하여 한 번의 설치로 다양한 웹사이트를 분석할 수 있도록 만들었습니다.
설치 후 바로 대시보드를 사용할 수 있고, 사이트 특성에 맞는 위젯과 AI 분석을 자동 생성할 수 있게 되었습니다.
FastAPI + InfluxDB 기반 데이터 파이프라인 설계
Plugin 기반 대시보드 위젯 시스템 개발
운영자는 수많은 로그와 대시보드를 가지고 있지만, '그래서 지금 서비스가 어떤 상태인지, 뭐가 문제인지'를 이해하기 위해 매번 수동으로 쿼리를 짜고 지표를 조합해야 했습니다.
LLM 기반 자동 리포트 생성, 플러그인 기반 위젯 구조, InfluxDB rollups로 실시간 데이터 수집·요약이 가능한 백엔드를 설계했습니다.
로컬 Ollama 모델로 긴 JSON 리포트를 생성하려 했지만, 응답이 중간에 잘리거나 스키마가 깨져 안정적인 리포트 파이프라인을 만들기 어려웠습니다.
리포트 JSON 스키마를 먼저 정의하고, OpenAI SDK로 응답을 생성한 뒤 스키마 기준으로 파싱·검증하는 구조로 전환해 항상 같은 형태의 리포트가 나오도록 만들었습니다.
path_raw를 필드로 저장해 페이지별 필터 쿼리가 인덱스를 전혀 타지 못했고, 리포트 요청마다 전체 스캔이 발생해 타임아웃과 CPU 100% 상황이 반복되었습니다.
시계열 특성에 맞게 path_raw를 태그로 옮기고, 자주 조회되는 필드를 태그/필드로 재구성해 쿼리 경로를 최적화했습니다. 그 결과 리포트 생성이 타임아웃 내에 안정적으로 완료되도록 개선했습니다.
위젯·AI 인사이트 기능을 오픈소스 형태로 확장하고 싶었지만, 코어 코드와 확장 모듈의 경계가 모호해 외부 기여자가 구조를 이해하기 어려웠습니다.
코어/플러그인 레이어를 명확하게 분리하고, 플러그인 위젯이 구현해야 할 인터페이스와 라이프사이클을 문서화했습니다. 컨트리뷰션 가이드·커밋 컨벤션을 정리해 PR 플로우를 표준화했습니다.
로그 수집 API와 AI 리포트 엔드포인트를 빠르게 구축하기 위해 FastAPI를 사용하고, Python 생태계의 데이터/AI 라이브러리로 실험과 프로토타이핑 속도를 높였습니다.
대량의 이벤트 로그를 시계열로 저장하고 롤업/집계를 빠르게 처리하기 위해 InfluxDB 3를 사용했습니다. 태그/필드 설계를 통해 쿼리 성능과 표현력을 동시에 확보했습니다.
대시보드는 React + TypeScript + Vite로 구현해 개발 경험과 런타임 성능을 챙겼고, Docker Compose로 API·DB·프론트엔드를 한 번에 올릴 수 있는 로컬/운영 일관 환경을 구성했습니다.
태그/필드 설계가 쿼리 성능과 비용에 직접적인 영향을 준다는 걸 체감했고, 시계열 DB는 초기에 워크로드를 가정하고 스키마를 신중하게 설계해야 한다는 교훈을 얻었습니다.
어떤 모델을 쓰느냐보다 JSON 스키마·파싱·에러 핸들링을 어떻게 설계하느냐가 안정성과 운영 비용에 훨씬 큰 영향을 준다는 걸 배웠습니다.
처음부터 플러그인 구조와 기여자 경험을 고려해 구조를 잡으면, 이후 기능 확장과 외부 기여를 받을 때 훨씬 수월하다는 걸 느꼈습니다.