장시간 비동기 작업, 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가 처리

연관 게시글