Kafka 대신 RDB? 장시간 비동기 작업, Task Queue로 해결!
by DD
6개월 전
조회수 18
Kafka의 5분 타임아웃 문제로 중복 엑셀 발송 이슈 발생
RDB 기반 Task Queue 아키텍처로 전환하여 작업 유실 방지 및 안정성 확보
Heartbeat 갱신, 재시도 처리, 분산 락 적용으로 시스템 복잡도 감소
Kafka의 한계와 RDB Task Queue의 등장
기존 Kafka 기반 엑셀 생성 시스템은 Consumer 타임아웃으로 인한 중복 메시지 처리 문제를 겪었다. 구체적으로, 30분 이상 소요되는 작업이 Kafka 리밸런싱을 유발하여 문제가 발생했다. 따라서 RDB 기반 Task Queue로 전환하여 작업 유실 방지 및 안정성을 확보했다.
RDB Task Queue 아키텍처 심층 분석
RDB Task Queue는 Heartbeat 갱신, 재시도 처리, 분산 락을 활용하여 안정성을 높였다. 구체적으로, Worker는 3초마다 PENDING 작업을 조회하고, Redis 분산 락으로 작업을 선점한다. 따라서 서버 장애 시에도 작업 복구가 가능하다.
Kafka vs RDB Task Queue: 트레이드오프 분석
Kafka는 빠른 처리량에 강점, RDB Task Queue는 장시간 작업과 상태 관리에 유리하다. Kafka는 Consumer 장애 시 데이터 유실 위험이 있었지만, RDB Task Queue는 작업 유실 방지를 위해 RDB에 작업 상태를 저장한다. 따라서 트랜잭션 특성에 맞는 시스템 선택이 중요하다.