Skip to content
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()],
)

ローカル検証 ​

  1. ローカルで Kova を起動

    bash
    docker run -d --name kova -p 9999:9999 ghcr.io/hanmahong5-arch/kova:latest
  2. あなたの Agent を実行

    bash
    python my_agent.py
  3. クラッシュをシミュレート

    bash
    kill -9 $(pgrep -f my_agent)
  4. 再起動 — 中断点から再開

    bash
    python my_agent.py

Kova へのデプロイ ​

yaml
# agent.yaml
name: my-research-agent
entry: python my_agent.py
replicas: 3
checkpointer: lumen
wal:
  retention: 7d
bash
lumen deploy --target kova://prod-cluster

クラッシュ復旧の比較実験 ​

指標SqliteSaverLumen + Kova
復旧レイテンシ8ms(単一マシン)マイクロ秒級
複数レプリカ追加のロックが必要ネイティブ
複数データセンター間手動コピー非同期レプリケーション内蔵
LLM 再呼び出しSQLite 書き込みが失敗すると再呼び出し再呼び出しは決して発生しない
Traceなし自動関連付け

マイクロ秒級の復旧はどこから来るのか

Kova エンジンのスケジューリングレイテンシは最小 3μs です(FIFO の完全パイプラインの Criterion ベンチマークで 3.17μs、315K ops/s)。LumenCheckpointer は LangGraph の checkpoint 書き込みを Kova WAL に委譲します —— 復旧は SQLite のファイルレベルではなくエンジンレベルの WAL リプレイを経由するため、マイクロ秒級となり、単一マシンの SQLite のミリ秒級よりはるかに高速です。

次のステップ ​

次のステップ

Powered by Lurus Technologies