피드로 돌아가기
Dev.toBackend
원문 읽기
Redis-PostgreSQL Dual Storage 기반 고신뢰성 분산 Job Queue 구현 (Job Registration 52ns/op)
I built a distributed job queue in Go to understand how they actually work
AI 요약
Context
단일 저장소 기반 Job Queue가 갖는 성능과 데이터 영속성 사이의 Trade-off 해결 필요성 인지. Redis의 빠른 처리 속도와 PostgreSQL의 강력한 데이터 내구성(Durability)을 동시에 확보하기 위한 아키텍처 설계 추진.
Technical Solution
- Redis Sorted Set 기반 Priority Queue를 활용한 고속 Dispatch 구조 설계
- PostgreSQL을 Source of Truth로 설정하여 Redis 장애 시 데이터 손실을 방지하는 Dual Storage 전략 채택
- PostgreSQL에서 Redis로 Job을 승격시키는 Scheduler를 통한 실행 시점 제어
- Goroutine 기반 Worker Pool을 구축하여 동시성 기반 Job 실행 처리
- In-progress 상태의 Job을 감시하는 Stale Reaper를 통해 Worker Crash 발생 시 자동 Requeue 처리
- 재시도 부하 감소를 위한 Exponential Backoff 메커니즘 적용
실천 포인트
1. 데이터 손실이 불가피한 경우 Redis 단일 사용 대신 RDB를 통한 State 백업 구조 검토
2. Worker Crash 상황을 가정한 Timeout 기반의 Requeue 로직 설계 여부 확인
3. 단순 재시도보다 시스템 부하를 조절할 수 있는 Exponential Backoff 전략 도입