백엔드
급증하는 트래픽 안정적으로 처리하기: 개선편(2) 논리적 파티셔닝
두줄요약
단일 큐에서 발생하던 HOL Blocking을 논리적 파티셔닝으로 완화했습니다. Coordinator 기반 독립 스케일링으로 10만 건 처리 시간을 84% 줄였습니다.
문제 상황
- 단일 Ready Queue 구조에서 대규모 TaskGroup이 큐를 점유하며 발생하는 HOL Blocking
- 인스턴스 단위 스케일링으로 인한 Worker 수의 배수 증가와 부하 전파
원인 분석
- Redis 성능보다 단일 Queue 공유 구조 자체가 병목
- 고객사 단위나 유형 단위보다 대규모 요청 격리에 더 적합한 분배 기준 필요
- 물리적 파티셔닝과 분산 조율은 현재 트래픽 규모에 비해 과한 복잡도
해결 방법
- 같은 Redis 안에서 keyspace만 분리한 논리적 파티셔닝 적용
- taskGroupID 해시 기반 라우팅으로 Partition별 독립 Consumer와 Worker 파이프라인 구성
- Coordinator가 Partition별 부하를 관찰해 Worker 수를 독립적으로 조절
성능/운영 포인트
- 10만 건 처리 시간을 25분에서 4분으로 단축
- Partition 간 격리로 HOL Blocking 완화
- Worker 수 checkpoint 저장으로 재시작 시 상태 복구
적용해볼 점
- 현재 트래픽에 맞는 최소 복잡도 수준에서 격리와 확장성 확보
- 논리적 파티셔닝으로 향후 물리적 파티셔닝 전환 여지 확보
