LangGraph에서 마이그레이션
LangGraph에서 Lumen + Kova로 마이그레이션
SqliteSaver → LumenCheckpointer + LumenTracer, Agent를 Kova 클러스터에 배포합니다——비즈니스 코드는 그대로입니다.
얻게 되는 것
| Before(순수 LangGraph) | After |
|---|---|
| SqliteSaver 단일 머신 영속화 | LumenCheckpointer + Kova 마이크로초급 WAL 복구 |
| Trace 없음 | LumenTracer 자동 수집 |
| Cost 통계 없음 | CostTracker Node 단위 집계 |
| 수동 Replay | Replay.from_run_id() 한 줄 |
마이그레이션 단계
Checkpointer 교체 —
LumenCheckpointer는BaseCheckpointSaver를 100% 구현하므로 비즈니스 코드를 전혀 수정할 필요가 없습니다.diff- from langgraph.checkpoint.sqlite import SqliteSaver + from lumen_ai import LumenCheckpointer - graph = wf.compile( - checkpointer=SqliteSaver.from_conn_string("./state.db") - ) + graph = wf.compile( + checkpointer=LumenCheckpointer() + )Tracer 추가 — 로컬에서 기동한 후
http://localhost:7070에 접속하면 Trace 타임라인을 확인할 수 있습니다.diff+ from lumen_ai import LumenTracer graph = wf.compile( checkpointer=LumenCheckpointer(), + callbacks=[LumenTracer()], )Kova에 배포
yaml# agent.yaml name: research-agent entry: python my_agent.py checkpointer: lumen replicas: 3bashlumen deploy --target kova://prod-cluster
로컬 검증
bash
python my_agent.py # 정상 실행
kill -9 $(pgrep -f my_agent) # 크래시 시뮬레이션
python my_agent.py # 중단 지점부터 이어서 실행, LLM 재호출 없음성능 비교
| 지표 | Before | After |
|---|---|---|
| 복구 지연 | 8ms | 마이크로초급 |
| 다중 프로세스 | 락 필요 | 네이티브 |
| 멀티 데이터센터 | 수동 | 비동기 복제 |
| LLM 재호출 | 가끔 | 절대 없음 |
롤백
기존 SqliteSaver 코드를 주석으로 남겨 두면 언제든 diff를 되돌려 원상태로 복귀할 수 있습니다. 데이터는 서로 호환되지 않지만 병렬로 실행할 수 있습니다.