피드로 돌아가기
Dev.toBackend
원문 읽기
Redis 기반 Replay-Then-Tail 구조로 5분 LLM 작업의 연결 단절 문제 해결
5-Minute AI Jobs and Closed Tabs — Why We Built Replay-Then-Tail SSE
AI 요약
Context
FastAPI의 SSE Generator 내에 비즈니스 로직을 배치하여 TCP 연결 종료 시 LLM 파이프라인이 즉시 취소되는 구조적 한계 발생. 단순 Background Worker와 Pub/Sub 조합은 이벤트 유실(At-most-once)로 인해 재접속 시 이전 진행 상태를 복구하지 못하는 제약 존재.
Technical Solution
- Request Lifecycle과 Worker Lifecycle을 완전히 분리하여 연결 상태와 무관한 작업 지속성 보장
- Redis List를 활용한 Event Store 설계로 재접속 시 누적된 모든 이벤트를 순차적으로 Replay하는 메커니즘 구현
- Redis Pub/Sub을 통한 실시간 Tail 기능을 결합하여 Replay 이후의 라이브 업데이트를 끊김 없이 제공
- Sequence Number 기반의 중복 제거 로직을 통해 부분적 실패 상황에서도 Exactly-once에 가까운 이벤트 전달 보장
- 단일 Redis Pipelined Round-trip으로 List, Set, Pub/Sub에 상태를 동시 기록하여 원자성 및 쓰기 성능 최적화
실천 포인트
1. SSE 구현 시 비즈니스 로직이 HTTP 요청 태스크 내부에 종속되어 있는지 확인
2. 재접속 시나리오(네트워크 전환, 탭 새로고침)에서 상태 복구를 위한 Event Store 설계 검토
3. Pub/Sub의 휘발성 특성을 보완할 영속성 저장소(Redis List 등)의 병행 사용 고려
4. 분산 환경의 이벤트 전달 시 Sequence ID를 통한 중복 처리 및 순서 보장 로직 적용