피드로 돌아가기
Dev.toBackend
원문 읽기

durable workflows for agents
Runner 프레임워크가 Durable Workflows를 도입해 HTTP 요청 범위를 벗어난 장시간 실행 Agent 워크플로우의 크래시 복구, 신호 대기, 중복 방지를 체계적으로 해결
AI 요약
Context
기존 Agent 워크플로우 라이브러리는 모델 호출, 도구 호출, 재시도, 폴백 모델, 구조화된 출력 연결 같은 오케스트레이션만 다룬다. 그러나 실제 Agent 시스템은 수 분에서 수 일에 걸쳐 실행되며, 서버 재시작, 배포, 워커 크래시, 큐 재전달, 외부 신호 대기 등으로 인한 상태 손실 문제가 발생한다. JavaScript 클로저는 분산 시스템 원시형이 아니므로 크래시 복구 능력이 떨어진다.
Technical Solution
- Durable Workflow 패턴 도입: 비동기 함수에 체크포인트를 추가하고, 복구 시 재실행하면서 완료된 스텝의 지속화된 결과로 빠르게 진행
- 부작용 격리 규칙: step() 내부에만 부작용을 배치해 중복 실행 방지 (예: 고객 중복 청구나 다중 이메일 전송 차단)
- Step ID 안정화: 배포 중 진행 중인 워크플로우에서 step ID를 유지해 상태 추적 일관성 보장
- 신호 대기 메커니즘: waitForSignal()으로 외부 신호(승인, webhook, 예약 이벤트)를 안전하게 대기
- 다중 백엔드 지원: 개발용 메모리 워크플로우(memoryWorkflow)와 프로덕션용 Redis+RabbitMQ 워크플로우(redisWorkflow) 제공
- 프로덕션 구성: Redis에 상태 지속화, RabbitMQ로 큐 관리(quorum 모드), 폴링 간격 1000ms, 동시성 10, 시작 시 복구 활성화
Key Takeaway
Agent 시스템의 진정한 어려움은 모델 호출이 아니라 시간 경과에 따른 안전한 일시 중지, 재개, 중복 방지, 취소, 수평 확장이다. Durable Workflow는 프롬프트를 똑똑하게 만드는 것이 아니라 프로덕션 환경에서 워크플로우를 생존 가능하게 만드는 기본 설계 원칙이다.
실천 포인트
AI 기반 시스템에서 인간 승인, 검토 루프, 장시간 리서치, 다단계 도구 실행, 예약 후속 작업, 규정 준수 게이트, 자식 워크플로우가 포함된 경우, Runner의 Durable Workflow를 @bluelibs/runner/node 패키지로 도입하면 서버 재시작 시에도 진행 상태를 안전하게 유지하고, 같은 부작용을 두 번 실행하지 않으며, 수평 확장 가능한 구조를 갖출 수 있다.