Postgres — transaction
사용자·organization·project·API key·prompt·dataset·evaluator 설정을 저장한다. tracing 대량 분석의 주 저장소가 아니다.
Langfuse 고가용성은 Web Pod 수가 아니라 수집 queue와 네 저장소의 복구 경계에서 결정된다
Langfuse WebLangfuse WorkerOLTPOnline Transaction ProcessingOLAPOnline Analytical ProcessingBullMQWeb replica는 ingest와 UI를 받고 Worker replica는 queue를 소비한다. 둘은 독립적으로 scale하지만 같은 Postgres, Redis, object storage, ClickHouse를 본다.
Postgres — transaction
사용자·organization·project·API key·prompt·dataset·evaluator 설정을 저장한다. tracing 대량 분석의 주 저장소가 아니다.
ClickHouse — analytics
Observation과 score를 높은 write throughput으로 받고 기간·model·name별 table·dashboard query를 처리한다.
Redis/Valkey — coordination
Web이 만든 background job queue와 API key·prompt cache를 맡는다. 단순 optional cache로만 보면 안 된다.
S3 — durable payload
Raw ingestion event와 image·audio 같은 media를 저장한다. Redis queue에는 큰 body 대신 S3 reference를 전달한다.
저장소 하나를 잃었을 때의 손실이 다르다. Postgres restore만으로 trace가 돌아오지 않고, ClickHouse restore만으로 prompt와 project identity가 돌아오지 않는다.
| 경로 | 흐름 | 병목 |
|---|---|---|
| ingest | SDK → Gateway → Web → S3 + Redis | Web CPU/network, object storage, Redis queue |
| processing | Worker → Redis/S3 → ClickHouse | Worker CPU, S3 read, ClickHouse insert/merge |
| trace query | Browser/API → Web → ClickHouse | query range, ClickHouse CPU/disk |
| prompt fetch | App → Web → Redis/Postgres | cache hit, Postgres latency |
| admin/eval | Browser/Worker → Postgres·LLM | DB connection, external model quota |
Ingest 2xx와 ClickHouse query freshness 사이에 queue가 있다. 이 decoupling이 burst를 흡수하지만 backlog가 계속 늘면 결국 S3·Redis·retention 비용과 관측 지연으로 돌아온다.
공식 scaling 문서는 2 CPU Worker에서 CPU 50% 이상을 saturation 신호의 하나로 제시하고 queue depth metric도 제공한다. 숫자를 그대로 threshold로 복사하지 말고 실제 event size와 masking/evaluator workload로 load test한다.
공식 self-host 문서 기준 Langfuse는 multi-shard ClickHouse를 지원하지 않는다. 한 shard 안에서 production은 최소 3 replica를 권장한다. replica는 redundancy이지 write shard 증가가 아니다.
지원하는 확장 축: shard 1개 × replica 여러 개지원하지 않는 축: shard 여러 개로 project/row 분산단일 shard의 disk·merge·query 한계에 가까워지면 무작정 shard 수를 늘리지 말고 retention, payload 크기, ClickHouse Cloud/BYOC 또는 공식 지원 경로를 검토한다.
| 방향 | allowlist |
|---|---|
| northbound SDK | application namespace → Gateway/Web OTLP·API |
| northbound UI | 사내 사용자/SSO → Web UI |
| state | Web·Worker → Postgres·Redis·S3·ClickHouse |
| evaluation | Worker/Web → 승인된 LLM API 또는 LiteLLM |
| telemetry | Web·Worker → 사내 OTLP collector, scraper |
Worker에 목적지 제한 없는 internet egress를 주면 judge나 playground는 편하지만 prompt가 외부로 나갈 새 경로가 된다. LLM connection은 data classification에 맞춰 LiteLLM의 internal-only model contract를 쓰는 편이 통제하기 쉽다.