데브옵스
Redis Stream 적용기
두줄요약
Redis Stream으로 session_id 히스토리 적재를 분리해 트래픽 급증 시 지연 문제를 해소했습니다. Pub/Sub의 한계를 피하면서도 병렬 처리와 pending 재처리로 운영 안정성을 확보했습니다.
핵심 내용
- session_id 히스토리 적재 로직을 Redis Stream 기반 신규 consumer로 분리해 트래픽 급증 시 데이터 처리 지연을 해소한 적용 사례
- 기존 Redis 저장소와 Spring Boot 환경을 활용해 publisher/consumer, consumer group, ack 처리, pending 메시지 재처리 흐름을 구성
- Pub/Sub의 휘발성과 중복 문제를 피하고, 여러 pod에서 중복·유실 없이 병렬 처리 가능한 스트리밍 구조를 선택
- 파티션이 없어 순서 보장에 한계가 있고, in-memory 특성상 pending 메시지 관리로 메모리 이슈를 예방해야 함
적용해볼 점
- 기존 인프라를 최대한 유지하면서 비동기 처리 경로를 분리하는 방식 고려
- ack, pending 재처리, 주기적 메모리 관리 같은 운영 로직을 함께 설계할 필요
- Redis Stream은 빠른 도입과 실시간 처리에 유리하지만 순서성 요구사항은 별도 검토 필요