Moait
홈인기 피드모든 블로그모든 태그
홈인기 피드모든 블로그모든 태그

장시간 비동기 작업, Kafka 대신 RDB 기반 Task Queue로 해결하기

우아한형제들 favicon우아한형제들·Architecture·
RedisKotlinApache Kafka
2025년 11월 25일3

AI 요약

이 글은 AI가 요약했어요. 정확한 내용은 꼭 원문을 확인해 주세요!

핵심 요약

우아한형제들이 장시간 비동기 작업을 Kafka 없이 RDB 기반 Task Queue와 Heartbeat 아키텍처로 재설계해 안정성과 재시도/복구를 개선했습니다.

구현 방법

  • RDB 엑셀 생성 대기열 excel_download_request(상태: PENDING/IN_PROGRESS/DONE/FAILED, last_heartbeat_at, retry_count) 도입
  • Worker가 3초 간격으로 PENDING 조회 후 Redis 분산 락으로 최대 2개 선점, IN_PROGRESS로 전환 및 Heartbeat를 1분 간격으로 갱신
  • 실패 시 최대 3회 재시도, 3회 초과 시 FAILED; 실패 시 PENDING으로 되돌려 자동 재처리
  • 장애 복구를 위한 Fallback Scheduler(ShedLock 적용)로 2분 이상 Heartbeat 없는 작업 재선점 및 재처리 방지

주요 결과

  • 중복 발송 문제 제거 및 Kafka 의존성 제거로 운영 안정성 증가
  • 배포 영향 없이 자동 복구 및 수평 확장 용이성 확보
  • 폴링 기반 구조로 단순 쿼리로 모니터링 가능하고 DB 인덱스 활용으로 비용 효율성 유지

연관 피드

%가 높을수록 이 글과 비슷할 가능성이 높아요!
No Image
74%

Redis New Connection 증가 이슈 돌아보기

우아한형제들 favicon우아한형제들·2025년 10월 14일
No Image
72%

6개월 만에 연간 수십조를 처리하는 DB CDC 복제 도구 무중단/무장애 교체하기

NAVER D2 faviconNAVER D2·2025년 11월 18일
제휴 서비스 수집 시스템, 첫 설계부터 지금까지의 여정 섬네일
71%

제휴 서비스 수집 시스템, 첫 설계부터 지금까지의 여정

SSG.COM faviconSSG.COM·2025년 03월 14일