LangChain SmithDB의 에이전트 트레이스 저장과 분석 아키텍처
SmithDB의 Rust 분산 스토리지와 Apache DataFusion 분석 구조, LangSmith 연계 방식 및 범용 데이터베이스와의 차이를 다룬다.
2026-08-14 · 최초 발행 2026-05-19
에이전트 실행이 복잡해질수록 결과만으로는 장애 원인이나 비용 증가 지점을 찾기 어렵다. 어느 모델과 도구가 호출됐는지, 어떤 스팬에서 시간이 지연됐는지, 오류가 호출 트리의 어디에서 시작됐는지를 실행 이력으로 추적해야 한다.
LangChain이 출시한 SmithDB는 이 에이전트 트레이스 관측성을 위해 설계된 분산 데이터베이스다. Rust로 작성된 스토리지 엔진과 Apache DataFusion SQL 실행 레이어를 결합해 수십억 건의 실행 이력을 저장하고 분석한다. LangSmith의 관측성 데이터를 처리하는 백엔드에서 출발했지만, 독립 오픈소스 프로젝트로 공개돼 특정 에이전트 프레임워크에 종속되지 않는다.
시간 범위로 나누는 분산 쓰기 경로
SmithDB는 트레이스 데이터를 타임스탬프에 따라 레인지 파티션으로 나눈다. 각 파티션은 별도의 Rust 프로세스인 샤드 노드가 관리하며, 클라이언트는 일관된 해싱으로 대상 노드를 결정해 직접 기록한다.
조회 경로에서는 B-Tree와 Bloom Filter가 서로 다른 역할을 맡는다. B-Tree는 지정된 시간 범위의 트레이스를 찾는 데 사용한다. Bloom Filter는 에이전트 ID나 트레이스 ID가 파티션 안에 존재하는지를 먼저 판별해 불필요한 디스크 I/O를 줄인다. SmithDB는 이 구조로 단일 노드에서 초당 10만 건 이상의 트레이스 쓰기를 처리한다고 발표됐다.
세션과 스팬으로 실행 맥락을 보존한다
저장 단위는 에이전트 실행 구조를 그대로 반영한다. 최상위 실행 세션 아래에 여러 스팬이 들어가고, 각 스팬은 에이전트의 단일 호출을 나타낸다. 스팬이 다시 자식 스팬을 가질 수 있으므로 멀티에이전트 호출 관계도 재귀적인 트리로 기록할 수 있다.
// SmithDB 트레이스 스키마 (Rust 구조체 개념)
#[derive(Serialize, Deserialize, SmithDBRecord)]
pub struct AgentSpan {
pub span_id: Uuid,
pub parent_span_id: Option<Uuid>,
pub session_id: Uuid,
pub agent_name: String,
pub model: String,
pub start_ts: i64, // Unix microseconds
pub end_ts: i64,
pub input_tokens: u32,
pub output_tokens: u32,
pub tool_calls: Vec<ToolCallRecord>,
pub error: Option<String>,
pub metadata: HashMap<String, Value>,
}
데이터는 Apache Parquet 기반 컬럼형 스토리지에 저장한다. 에이전트 이름, 모델명, 오류 코드처럼 반복되는 문자열은 딕셔너리 인코딩으로 정수 ID에 대응시키고, 수치 필드에는 ZStandard(Zstd) 압축을 적용한다. SmithDB 팀이 밝힌 압축률은 원시 트레이스 데이터 대비 10-15배다.
최근 데이터와 장기 보관 데이터의 조회 경로도 분리된다. 최근 1시간 이내의 트레이스는 Rust의 DashMap 기반 샤딩 해시맵에 유지하며 마이크로초 수준 레이턴시로 응답한다. 그보다 오래된 데이터는 Parquet 파일에서 읽고, DataFusion의 쿼리 푸시다운으로 필요한 범위만 스캔한다.
DataFusion으로 트레이스를 직접 집계한다
SmithDB는 저장된 Parquet 파일을 DataFusion에서 직접 쿼리한다. 별도의 OLAP 계층을 두지 않고 SQL 분석을 제공하는 구조다. 실행 과정에서는 Arrow 컬럼형 메모리 포맷을 사용하므로 트레이스 집계도 컬럼 단위로 처리된다.
-- 에이전트별 평균 레이턴시 및 오류율 분석 (SmithDB SQL 예시)
SELECT
agent_name,
model,
COUNT(*) as total_spans,
AVG(end_ts - start_ts) / 1000 as avg_latency_ms,
PERCENTILE_CONT(0.95) WITHIN GROUP (ORDER BY end_ts - start_ts) / 1000 as p95_latency_ms,
SUM(CASE WHEN error IS NOT NULL THEN 1 ELSE 0 END) * 100.0 / COUNT(*) as error_rate_pct,
SUM(input_tokens + output_tokens) as total_tokens
FROM agent_spans
WHERE start_ts BETWEEN epoch_ms('2026-05-18') AND epoch_ms('2026-05-19')
GROUP BY agent_name, model
ORDER BY total_spans DESC;
DataFusion의 벡터화 실행 엔진은 SIMD 명령어를 이용해 컬럼 데이터를 배치로 처리한다. 수억 건의 트레이스를 대상으로 한 집계 쿼리에 초 단위로 응답하는 것이 목표 성능 지표다.
반복해서 확인하는 운영 지표는 사전 정의된 집계 뷰로 제공한다. 에이전트별 시간당 호출 수, 모델별 토큰 소비량, 오류 빈도 추이 같은 뷰가 내장돼 있으며 주기적으로 자동 갱신된다.
통계와 예측 결과에서 이상 징후를 찾는다
이상 탐지는 Z-Score 기반 통계 분석과 시계열 예측을 사용한다. 처리 결과는 알림 라우터를 거쳐 Slack이나 PagerDuty로 전달되며, 이상 이벤트 자체도 SmithDB에 저장된다.
Z-Score 분석기는 최근 24시간 슬라이딩 윈도우에서 평균과 표준편차를 계산한다. 현재 값의 Z-Score가 3.0을 초과해 평균에서 3 표준편차 이상 벗어나면 이상으로 분류한다. 시계열 예측 분석기는 DataFusion의 시계열 함수로 다음 시간의 트래픽을 예측하고, 실제값이 예측값에서 50% 이상 벗어날 때 이상으로 처리한다.
성능 병목은 트레이스에서 생성한 Flame Graph로 확인할 수 있다. 실행 시간이 많이 걸린 스팬 경로를 계층적으로 표시해 전체 레이턴시를 늘린 에이전트 단계를 찾는 방식이다.
실험 비교 기능은 같은 입력에 모델 버전 A와 B를 각각 적용한 결과를 분석한다. 레이턴시, 토큰 소비량, 품질 점수의 차이를 통계적 유의성과 함께 비교하는 것이 핵심 사용 사례다.
LangSmith와 SmithDB가 맡는 역할
LangSmith는 2023년 출시된 LangChain 에이전트용 SaaS 관측성 플랫폼이다. 사용자 친화적인 UI와 LangChain 네이티브 통합을 제공하지만, 대용량 트레이스 처리나 자체 인프라 운영 요구에는 대응하기 어려웠다.
SmithDB는 LangSmith를 없애는 대체재라기보다 스토리지 기반 또는 보완재에 가깝다.
LangSmith의 스토리지 백엔드를 SmithDB로 교체해 성능을 개선할 수 있고, SmithDB를 독립적으로 운영하면서 LangSmith UI를 프론트엔드로 연결할 수도 있다. LangChain의 오픈소스 공개는 SaaS 종속성 우려를 줄이면서 생태계를 넓히려는 전략으로 해석된다.
범용 OLAP·시계열 데이터베이스와 다른 지점
ClickHouse는 OLAP 쿼리 성능이 뛰어나 에이전트 트레이스 분석에도 사용된다. 다만 범용 OLAP 데이터베이스이므로 에이전트 트레이스의 계층형 스팬 구조를 다루는 전용 쿼리 추상화가 없다. 스팬 트리를 복원하려면 사용자가 복잡한 재귀 SQL을 작성해야 한다.
PostgreSQL 기반 시계열 데이터베이스인 TimescaleDB는 시간 범위 조회에 강점이 있다. 반면 수십억 건 규모의 트레이스를 고압축 컬럼형으로 저장하는 워크로드에서는 Parquet 기반 SmithDB보다 저장 효율이 낮다.
SmithDB가 구분되는 지점은 에이전트 트레이스 도메인에 맞춘 기능이다. 스팬 계층 쿼리, 멀티에이전트 호출 그래프 시각화, LLM 토큰 비용 집계를 데이터베이스에 내장했다. Rust의 성능과 메모리 안전성, DataFusion의 SQL 분석 능력도 이 전용 스키마와 함께 작동한다.
오픈소스 공개 이후에는 Helicone, Langfuse, Phoenix(Arize) 같은 에이전트 관측성 SaaS가 SmithDB를 스토리지 백엔드로 채택하거나 호환성을 선언할 가능성이 높다. 관측성 플랫폼이 UI·분석 레이어와 스토리지 레이어로 나뉘는 흐름은 Prometheus와 Grafana가 메트릭 모니터링 생태계에서 만든 분화 패턴과 유사하다.
에이전트 시스템이 복잡해지면 개별 응답보다 호출 과정 전체를 설명할 수 있는 데이터가 필요해진다. SmithDB는 그 실행 맥락을 저장하고 SQL로 분석하는 전용 인프라를 지향한다. LangSmith 생태계의 기반으로도, 독립적인 오픈소스 데이터베이스로도 에이전트 관측성 인프라의 새로운 표준이 될 가능성이 있다.