Lumen × LangGraph × Kova
Lumen × LangGraph × Kova
목표: LangGraph Agent의 Checkpointer를 SqliteSaver에서 LumenCheckpointer로 교체하고, Kova에 배포하여 크래시 복구를 비교 관찰합니다.
Before / After
Before — 순수 LangGraph
단일 머신, 원격 백업 없음 · 프로세스 간 락 필요 · 밀리초급 크래시 복구 · 비용 추적 없음.
After — Lumen + Kova
마이크로초급 크래시 복구(Kova WAL 엔진) · 네이티브 멀티프로세스 안전성 · 자동 Trace + Cost · 원격 영속화.
Before
python
from langgraph.checkpoint.sqlite import SqliteSaver
graph = wf.compile(checkpointer=SqliteSaver.from_conn_string("./state.db"))After
python
from lumen_ai import LumenCheckpointer, LumenTracer
from kova import KovaClient
kova = KovaClient("kova://prod-cluster")
graph = wf.compile(
checkpointer=LumenCheckpointer(kova_client=kova),
callbacks=[LumenTracer()],
)로컬 검증
로컬 Kova 기동
bashdocker run -d --name kova -p 9999:9999 ghcr.io/hanmahong5-arch/kova:latestAgent 실행
bashpython my_agent.py크래시 시뮬레이션
bashkill -9 $(pgrep -f my_agent)재시작 — 중단 지점에서 이어서 진행
bashpython my_agent.py
Kova에 배포
yaml
# agent.yaml
name: my-research-agent
entry: python my_agent.py
replicas: 3
checkpointer: lumen
wal:
retention: 7dbash
lumen deploy --target kova://prod-cluster크래시 복구 비교 실험
| 지표 | SqliteSaver | Lumen + Kova |
|---|---|---|
| 복구 지연 | 8ms(단일 머신) | 마이크로초급 |
| 다중 복제본 | 추가 락 필요 | 네이티브 |
| 크로스 데이터센터 | 수동 복제 | 비동기 복제 내장 |
| LLM 재호출 | SQLite 쓰기 실패 시 재호출 | 재호출 없음 |
| Trace | 없음 | 자동 연계 |
마이크로초급 복구는 어디서 오는가
Kova 엔진의 스케줄링 지연은 3μs까지 낮습니다(FIFO 전체 파이프라인 Criterion 벤치마크 3.17μs, 315K ops/s). LumenCheckpointer는 LangGraph의 checkpoint 쓰기를 Kova WAL에 위임합니다 — 복구는 SQLite 파일 레벨이 아니라 엔진 레벨의 WAL 리플레이로 진행되므로 마이크로초급이며, 단일 머신 SQLite의 밀리초급보다 훨씬 빠릅니다.