#영속성 & 장애 복구

버전: 0.33.0 최종 업데이트: 2026-03-15 적용 대상: ranvier-runtime 카테고리: Deep Dives


프로덕션 수준의 워크플로우 내구성과 Saga 스타일 보상 처리입니다.

#복구 흐름

  1. 추가: 런타임이 성공적인 각 단계 이후 체크포인트를 저장합니다.
  2. 장애: 외부 상태는 커밋된 채로 유지되고, 프로세스 상태는 소실됩니다.
  3. 재개: 재시작된 프로세스가 트레이스를 로드하고 마지막 커서에서 재개합니다.

#내구성 어댑터

백엔드 특성
PostgreSQL ACID 호환, 다중 프로세스 내구성 스토리지
Redis 고처리량, 서브밀리초 임시 체크포인트
InMemory 의존성 없음, 테스트 및 로컬 개발에 이상적

#Saga 패턴

  • 보상: 되돌릴 수 없는 사이드 이펙트에 대한 롤백 훅을 정의합니다.
  • 멱등성: 트레이스당 보상이 정확히 한 번만 실행되도록 보장합니다.
  • 자동 트리거: Fault 발생 시 런타임이 자동으로 훅을 실행합니다.

#빠른 시작

// Cargo.toml: feature persistence-postgres
let store = PostgresPersistenceStore::new(pool);
store.ensure_schema().await?;
bus.insert(PersistenceHandle::from_store(store));

#워크플로우

  1. 인그레스 경계에서 Bus에 PersistenceHandle을 삽입합니다.
  2. 사이드 이펙트가 있는 Transition에 CompensationHook을 정의합니다.
  3. 컴플라이언스 요구 사항에 따라 보존 정책(TTL/Purge)을 설정합니다.
  4. 프로덕션에서 checkpoint_failures_total 메트릭을 모니터링합니다.

#주요 타입

타입 설명
PersistenceStore 워크플로우 이벤트 저장 및 재개를 위한 주요 트레이트
PersistenceEnvelope trace_id, step, outcome을 포함하는 최소 레코드
CompensationHook Saga 스타일 롤백 로직을 정의하기 위한 프로토콜
IdempotencyStore 중복 보상 실행을 방지하기 위한 계약