피드로 돌아가기
Dev.toBackend
원문 읽기
PostgreSQL 기반 Durable Workflow 설계로 AI Agent 상태 손실 및 중복 실행 완전 제거
When Your AI Agent Restarts Mid-Task: Building Durable Workflows in Spring Boot
AI 요약
Context
In-memory 상태 기반의 LLM Tool-calling 루프 구조로 인해 Pod 재시작 시 워크플로우 유실 및 네트워크 재시도에 따른 중복 Side-effect 발생. Thread.sleep 방식의 승인 대기 구조가 인프라 스케줄링 시 상태 소멸로 이어지는 가용성 한계 직면.
Technical Solution
- 상태 관리 모델을 Java Heap에서 PostgreSQL 행(Row) 기반의 Persistence 구조로 전환하여 Restart Amnesia 해결
- Spring @Scheduled 기반 Dispatcher와 DB Lease 메커니즘을 도입해 분산 환경 내 Step 실행 보장 및 중복 처리 방지
- Outbox Problem 방지를 위해 Queue 대신 Postgres-as-queue 전략을 채택하여 상태 변경과 Tool 실행 기록을 단일 트랜잭션으로 묶어 데이터 정합성 확보
- Client-supplied Key와 Derived Key(Tenant+Run+Step+Tool+Hash)의 2단계 Idempotency 계층을 설계해 API 요청 및 도구 실행 단계의 중복 호출 차단
- Human-in-the-loop 승인 프로세스를 메모리 대기가 아닌 DB 기반 Wait State로 구현하여 프로세스 재시작 후에도 중단 지점부터 재개 가능한 구조 설계
실천 포인트
1. Agent의 상태를 JVM Heap이 아닌 DB-backed State Machine으로 관리하고 있는가?
2. 외부 API 호출 전후로 멱등성 키(Idempotency Key)를 생성하고 검증하는 로직이 포함되었는가?
3. 승인 대기 등 Long-running Task를 Thread blocking이 아닌 DB 상태 기반의 비동기 이벤트로 처리하는가?
4. 상태 업데이트와 실행 로그 기록이 단일 트랜잭션 내에서 원자적으로 처리되는가?