피드로 돌아가기
Dev.toDatabase
원문 읽기
ClickHouse 도입으로 LLM 로그 쿼리 지연시간 3.2s에서 12ms로 단축
How We Log LLM Requests at Sub-50ms Latency Using ClickHouse
AI 요약
Context
PostgreSQL 기반의 행 지향 저장 구조로 인해 LLM 요청 로그가 200만 건 이상 증가하며 비용 집계 쿼리 성능 저하 발생. 대규모 데이터셋에서 특정 컬럼만 합산하는 Aggregation 쿼리 실행 시 불필요한 전체 행 I/O가 발생하는 병목 지점 확인.
Technical Solution
- Append-only 특성과 High-cardinality 데이터 분석에 최적화된 Columnar Storage 기반의 ClickHouse로 전환
- LowCardinality(String) 타입을 적용하여 모델 및 제공자 정보의 저장 공간 4배 절감 및 스캔 속도 향상
- AggregatingMergeTree 엔진과 Materialized View를 결합하여 데이터 삽입 시점에 실시간으로 지표를 사전 집계하는 구조 설계
- Monthly Partitioning 전략을 통한 오래된 데이터의 효율적인 삭제 및 관리 체계 구축
- Go 언어의 Buffered Channel과 Background Goroutine을 활용하여 500ms 단위의 Batch Flush를 수행하는 비동기 쓰기 경로 구현
- 시스템 안정성 확보를 위해 채널 포화 시 로그를 폐기하는 Drop-on-full 전략을 채택하여 요청 처리 지연 방지
실천 포인트
- 월간 LLM 요청 수가 100만 건을 초과하며 분석 쿼리 타임아웃이 발생하는지 검토 - 분석 대상 컬럼의 카디널리티가 낮을 경우 Dictionary encoding(LowCardinality) 적용 고려 - 쓰기 성능 확보를 위해 애플리케이션 레벨의 Batching 및 비동기 쓰기 파이프라인 설계 검토 - 전체 데이터 스캔을 피하기 위해 AggregatingMergeTree 기반의 사전 집계 테이블 도입 검토