피드로 돌아가기
When Your AI Agent Restarts Mid-Task: Building Durable Workflows in Spring Boot
Dev.toDev.to
Backend

PostgreSQL 기반 Durable Workflow 설계로 AI Agent 상태 손실 및 중복 실행 완전 제거

When Your AI Agent Restarts Mid-Task: Building Durable Workflows in Spring Boot

Henry Li2026년 6월 21일8intermediate

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. 상태 업데이트와 실행 로그 기록이 단일 트랜잭션 내에서 원자적으로 처리되는가?

원문 읽기