피드로 돌아가기
Dev.toBackend
원문 읽기
Durable Execution 도입을 통한 Python 워크플로우 Crash-safe 구조 구현
Your Python Workflow Crashes Between Steps. Here Is Why, and How to Fix It.
AI 요약
Context
Celery의 At-least-once delivery 특성으로 인한 다단계 워크플로우의 중복 실행 문제 발생. 개별 태스크 단위의 보장만으로는 상태 유지(Stateful)가 필요한 복잡한 비즈니스 로직의 원자성 확보에 한계 노출.
Technical Solution
- Step Output의 Atomic Checkpointing을 통한 상태 저장 및 트랜잭션 보장
- Failure Point 기반의 Replay 메커니즘을 통한 기완료 단계 Skip 및 실패 지점부터 재개
- 기존 RDBMS(PostgreSQL, MySQL 등)를 상태 저장소로 활용하여 별도 서버 클러스터 없는 인프라 구축
- Saga Pattern 적용을 통한 하위 단계 실패 시 보상 트랜잭션(Compensating Function)의 자동 실행
- Pydantic 모델 기반의 Type Safety 확보 및 In-memory Crash Simulation 테스트 환경 제공
- Signals 기능을 통한 Worker 슬롯 점유 없는 외부 이벤트 기반 Human-in-the-loop 흐름 제어
실천 포인트
1. 다단계 워크플로우 중 일부 단계 실패 시 재실행으로 인한 Side Effect 발생 여부 확인
2. Idempotency Key를 통한 수동 중복 제거 로직이 과도하게 복잡한지 검토
3. Temporal 수준의 강력한 보장이 필요하나 인프라 운영 비용이 부담되는 상황인지 판단
4. 기존에 사용 중인 RDBMS를 활용해 Durable Execution으로 전환 가능한 구조인지 분석