LangGraph Persistence Layer 동작 원리

2025. 5. 13. 19:38·AI4C

Persistent Layer 역할

LangGraph에는 내장된 Persistence Layer가 있어 체크포인터를 통해 상태를 지속적으로 저장한다. Graph 실행 중 각 단계마다 그래프 상태를 스냅샷으로 저장하며, 실행 후에도 해당 상태를 유지/조회할 수 있게 해준다. 이 기능을 통해 대화 메모리, 실행 재개, 시간 여행 등의 고급 기능을 구현할 수 있다.

MemorySaver는 체크포인터 인터페이스의 구현체 중 하나로 일종의 메모리 기반 Persistence Layer 역할을 수행한다.

checkpointer = MemorySaver()
graph = workflow.compile(checkpointer=checkpointer)

 

스레드 ID로 사용자 세션 매핑

LangGraph는 각 대화 세션을 스레드라는 독립 실행 단위로 관리한다. 스레드에는 고유한 식별자가 부여되며, UUID 등의 방식을 활용해 생성한다. 그래프를 실행할 때는 스레드 ID를 명시해야 하며, 동일 스레드 ID로 후속 호출을 하면 해당 스레드의 이전 대화 상태를 자동으로 불러온다. 이러한 구조 덕분에 각 사용자 세션에 상태가 매핑되어, 세션 간 상태 충돌없이 개별 대화 컨텍스트를 유지할 수 있다.

config = {"configurable": {"thread_id": "1"}}
graph.invoke({"foo": ""}, config)

 

상태 저장 & 복구

체크포인터는 각 단계의 StateSanpshot을 스레드에 연결해 저장하며, 여기에는 현재 상태 값, 메타데이터, 다음 실행 노드 정도 등이 포함된다. 필요 시 graph.get_state()로 최신 상태를 조회하거나, 특정 checkpoint ID로 과거 상태를 불러올 수 있다. 이렇게 저장된 상태를 활용해 그래프 실행을 이어서 재개하거나, 에러가 발생한 시점으로 되돌아가 수정하는 등의 기능을 구현할 수 있다.

# get the latest state snapshot
config = {"configurable": {"thread_id": "1"}}
print(graph.get_state(config))

# get a state snapshot for a specific checkpoint_id
config = {"configurable": {"thread_id": "1", "checkpoint_id": "1ef663ba-28fe-6528-8002-5a559208592c"}}
print("get_state:", graph.get_state(config))

# get the full history of the graph execution for a given thread
config = {"configurable": {"thread_id": "1"}}
print("\n\nget_state_history:", list(graph.get_state_history(config)))

 

체크포인터 저장 옵션 비교

LangGraph는 여러 종류의 체크포인터를 지원하며, 용도에 따라 선택할 수 있다.

  • 메모리 체크 포인터
    • 기본 제공되는 인메모리 체크포인터로, 속도가 빠르지만 프로세스가 종료되면 상태가 휘발됨
  • SQLite 체크포인터
    • SQLite 데이터베이스에 상태를 저장하는 구현체로, 로컬 파일 기반의 영속성을 제공한다.
  • PostgreSQL 체크포인터
    • Postgres DB에 상태를 저장하는 고급 체크포인터로, 다중 세션과 대규모 서비스에 견고한 영속성을 제공한다.

이외에도 사용자 정의로 NoSQL이나 기타 DB를 사용할 수 있지만 LangGraph에서 공식 제공하는 것은 위 세가지이다.

'AI4C' 카테고리의 다른 글

LangChain Handling Tool Errors  (0) 2025.05.14
LangChain tool 등록  (0) 2025.05.14
LangGraph 코드 예제  (0) 2025.05.11
LangGraph 아키텍처  (0) 2025.05.11
LangGraph Agent 실행  (1) 2025.05.07
'AI4C' 카테고리의 다른 글
  • LangChain Handling Tool Errors
  • LangChain tool 등록
  • LangGraph 코드 예제
  • LangGraph 아키텍처
bde574786
bde574786
  • bde574786
    꾸러기해커
    bde574786
  • 전체
    오늘
    어제
    • 분류 전체보기 (173)
      • 워게임 (108)
        • 웹해킹 (88)
        • 시스템해킹 (6)
        • 리버싱 (12)
        • 암호학 (2)
      • 보안 (3)
        • 웹 (3)
      • Report (7)
        • One-Day (1)
        • Zero-Day (6)
      • Git (35)
      • CTF Write Up (10)
        • b01lers CTF 2025 (5)
        • BYU CTF 2025 (5)
      • AI4C (7)
      • etc (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    dom clobbering
    case mapping collision
    Stack Buffer Overflow
    sql injection
    type juggling
    CVE
    git
    XSS
    prototype pollution
    Wordpress
    url globbing
    return address overwrite
    php deserialization
    LFI
    crlf injection
    Path Traversal
    SSRF
    SSTI
    Blind SQL Injection
    RCE
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
bde574786
LangGraph Persistence Layer 동작 원리
상단으로

티스토리툴바