장시간 비동기 작업, Kafka 대신 RDB 기반 Task Queue로 해결하기
18
AI 요약
이 글은 AI가 원문을 분석하여 핵심 내용을 요약한 것입니다.
이 게시물은 Kafka 기반 엑셀 생성에서 발생한 리밸런싱으로 인한 중복 발송 문제를 RDB 기반 Task Queue와 Heartbeat로 해결한 사례 소개
문제
요약
- Kafka Consumer의 max.poll.interval.ms 초과로 인한 리밸런싱과 동일 메시지의 중복 처리 문제
- 임시 핫픽스(비동기 처리 후 즉시 ACK)로 중복은 회피했으나 작업 유실 및 배포 시 문제점 존재
- 트래픽 폭주가 없고, 장시간 작업 특성상 Kafka가 적합하지 않다는 결론
해결 아키텍처
주요 설계
- 작업을 RDB에 영구 저장하고 Redis 분산 락으로 선점, IN_PROGRESS 상태에서 주기적 Heartbeat 갱신
- 재시도: retry_count로 최대 3회 자동 재시도, 실패 시 FAILED 처리
- 장애 복구: 2분 이상 Heartbeat 미갱신 작업을 Fallback 스케줄러가 PENDING으로 되돌려 다른 Worker가 처리
