백엔드
Redis Stream 적용기
두줄요약
Redis Stream으로 session_id 적재 로직을 분리해 트래픽 급증 시 발생하던 처리 지연을 해소했습니다. Consumer group, ACK, pending 재처리를 함께 적용해 안정성을 높였습니다.
문제 상황
- session_id 히스토리 적재와 API 서비스에서 유저 유입 급증 시 데이터 처리 지연 발생
- 기존 파이프라인의 부하 로직을 분리해 별도 처리할 필요
원인 분석
- Pub/Sub 방식의 휘발성, 중복 처리 한계
- 트래픽 급증 시 기존 처리 경로의 병목
- Redis cluster 환경에서 병렬 처리와 유실 방지 요구
해결 방법
- Redis Stream으로 session 객체를 메시지화해 발행하고 consumer group으로 비동기 처리
- XACK, pending 처리, 스케줄러를 통해 미처리 메시지 재처리 및 메모리 관리
- 기존 Redis 인프라를 활용해 빠르게 적용