APILog — Open-source AI Web Analytics

APILog — Open-source AI Web Analytics

AI 기반 자동 분석과 실시간 로그 시각화가 가능한 오픈소스 웹 분석 플랫폼

2025.10.13 - 2025.11.20 (5주)
·
Full-stack / DevOps (풀스택·인프라 설계)
Tech Stack
FastAPIPythonInfluxDB 3ReactTypeScriptViteDocker
APILog — Open-source AI Web Analytics dashboard tutorial

Project Overview

서비스 로그를 수집해 AI 리포트와 커스텀 위젯을 자동으로 만들어주는 오픈소스 웹 분석 플랫폼입니다. FastAPI + InfluxDB 기반의 고성능 로그 수집/저장 구조를 설계하고, React 기반 대시보드와 AI 자동 분석 기능을 직접 개발했습니다. 플러그인 구조, 위젯 시스템, 실시간 롤업 파이프라인을 설계하여 한 번의 설치로 다양한 웹사이트를 분석할 수 있도록 만들었습니다.

Key Achievements

Business Impact

설치 후 바로 대시보드를 사용할 수 있고, 사이트 특성에 맞는 위젯과 AI 분석을 자동 생성할 수 있게 되었습니다.

Key Highlight

FastAPI + InfluxDB 기반 데이터 파이프라인 설계

Key Highlight

Plugin 기반 대시보드 위젯 시스템 개발

Project Significance

운영자는 수많은 로그와 대시보드를 가지고 있지만, '그래서 지금 서비스가 어떤 상태인지, 뭐가 문제인지'를 이해하기 위해 매번 수동으로 쿼리를 짜고 지표를 조합해야 했습니다.

LLM 기반 자동 리포트 생성, 플러그인 기반 위젯 구조, InfluxDB rollups로 실시간 데이터 수집·요약이 가능한 백엔드를 설계했습니다.

Challenges & Solutions

1
Problem

Ollama 기반 JSON 리포트 불안정

로컬 Ollama 모델로 긴 JSON 리포트를 생성하려 했지만, 응답이 중간에 잘리거나 스키마가 깨져 안정적인 리포트 파이프라인을 만들기 어려웠습니다.

1
Solution

OpenAI SDK 기반 리포트 엔진으로 전환

리포트 JSON 스키마를 먼저 정의하고, OpenAI SDK로 응답을 생성한 뒤 스키마 기준으로 파싱·검증하는 구조로 전환해 항상 같은 형태의 리포트가 나오도록 만들었습니다.

2
Problem

InfluxDB 스키마 설계 미스로 인한 타임아웃

path_raw를 필드로 저장해 페이지별 필터 쿼리가 인덱스를 전혀 타지 못했고, 리포트 요청마다 전체 스캔이 발생해 타임아웃과 CPU 100% 상황이 반복되었습니다.

2
Solution

시계열 스키마 재설계 및 쿼리 최적화

시계열 특성에 맞게 path_raw를 태그로 옮기고, 자주 조회되는 필드를 태그/필드로 재구성해 쿼리 경로를 최적화했습니다. 그 결과 리포트 생성이 타임아웃 내에 안정적으로 완료되도록 개선했습니다.

3
Problem

플러그인 아키텍처 및 기여자 경험 설계

위젯·AI 인사이트 기능을 오픈소스 형태로 확장하고 싶었지만, 코어 코드와 확장 모듈의 경계가 모호해 외부 기여자가 구조를 이해하기 어려웠습니다.

3
Solution

코어/플러그인 분리와 컨트리뷰션 가이드 정리

코어/플러그인 레이어를 명확하게 분리하고, 플러그인 위젯이 구현해야 할 인터페이스와 라이프사이클을 문서화했습니다. 컨트리뷰션 가이드·커밋 컨벤션을 정리해 PR 플로우를 표준화했습니다.

Tech Stack & Why

FastAPI & Python

로그 수집 API와 AI 리포트 엔드포인트를 빠르게 구축하기 위해 FastAPI를 사용하고, Python 생태계의 데이터/AI 라이브러리로 실험과 프로토타이핑 속도를 높였습니다.

InfluxDB 3

대량의 이벤트 로그를 시계열로 저장하고 롤업/집계를 빠르게 처리하기 위해 InfluxDB 3를 사용했습니다. 태그/필드 설계를 통해 쿼리 성능과 표현력을 동시에 확보했습니다.

React + TypeScript + Vite + Docker Compose

대시보드는 React + TypeScript + Vite로 구현해 개발 경험과 런타임 성능을 챙겼고, Docker Compose로 API·DB·프론트엔드를 한 번에 올릴 수 있는 로컬/운영 일관 환경을 구성했습니다.

Key Learnings

시계열 스키마 설계가 곧 성능이다

태그/필드 설계가 쿼리 성능과 비용에 직접적인 영향을 준다는 걸 체감했고, 시계열 DB는 초기에 워크로드를 가정하고 스키마를 신중하게 설계해야 한다는 교훈을 얻었습니다.

LLM 파이프라인은 모델보다 구조가 중요하다

어떤 모델을 쓰느냐보다 JSON 스키마·파싱·에러 핸들링을 어떻게 설계하느냐가 안정성과 운영 비용에 훨씬 큰 영향을 준다는 걸 배웠습니다.

오픈소스를 전제로 한 아키텍처 설계

처음부터 플러그인 구조와 기여자 경험을 고려해 구조를 잡으면, 이후 기능 확장과 외부 기여를 받을 때 훨씬 수월하다는 걸 느꼈습니다.