#영속성 & 장애 복구
버전: 0.33.0 최종 업데이트: 2026-03-15 적용 대상: ranvier-runtime 카테고리: Deep Dives
프로덕션 수준의 워크플로우 내구성과 Saga 스타일 보상 처리입니다.
#복구 흐름
- 추가: 런타임이 성공적인 각 단계 이후 체크포인트를 저장합니다.
- 장애: 외부 상태는 커밋된 채로 유지되고, 프로세스 상태는 소실됩니다.
- 재개: 재시작된 프로세스가 트레이스를 로드하고 마지막 커서에서 재개합니다.
#내구성 어댑터
| 백엔드 | 특성 |
|---|---|
| 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));#워크플로우
- 인그레스 경계에서 Bus에
PersistenceHandle을 삽입합니다. - 사이드 이펙트가 있는 Transition에
CompensationHook을 정의합니다. - 컴플라이언스 요구 사항에 따라 보존 정책(TTL/Purge)을 설정합니다.
- 프로덕션에서
checkpoint_failures_total메트릭을 모니터링합니다.
#주요 타입
| 타입 | 설명 |
|---|---|
| PersistenceStore | 워크플로우 이벤트 저장 및 재개를 위한 주요 트레이트 |
| PersistenceEnvelope | trace_id, step, outcome을 포함하는 최소 레코드 |
| CompensationHook | Saga 스타일 롤백 로직을 정의하기 위한 프로토콜 |
| IdempotencyStore | 중복 보상 실행을 방지하기 위한 계약 |