Redis Stream 도입으로 세션 데이터 처리 성능 UP!

by DD
1년 전
조회수 3

세션 정보 적재 지연 문제를 해결하기 위해 Redis Stream을 도입함

Redis StreamConsumer Group을 활용하여 메시지 처리의 안정성과 확장성을 확보함

Spring Boot 기반 환경에서 RedisTemplate을 사용하여 Redis Stream을 구현함

Redis Stream 아키텍처 심층 분석

Redis Stream은 고가용성 데이터 스트리밍 처리를 위해 설계되었으며, XADD, XREADGROUP, XACK 등의 명령어를 통해 메시지를 제어한다. 구체적으로 Consumer Group을 지원하여 여러 컨슈머가 메시지를 병렬 처리할 수 있도록 한다. 따라서 데이터 처리량 증가시스템 안정성 확보가 가능하다.

Kafka vs Redis Stream: 선택의 갈림길

Kafka는 파티셔닝을 지원하여 수평적 확장성이 뛰어나지만, Redis Stream은 파티션 개념이 없어 추가 개발이 필요하다. Redis Stream은 in-memory 기반으로 속도가 빠르지만, 메모리 관리에 주의해야 한다. 반면, Kafka는 데이터 보존 기간 설정이 용이하다.

Redis Stream 적용 시 고려사항

Redis Stream 적용 시 메모리 관리가 핵심 과제이다. 구체적으로, XACK를 통해 메시지 처리 여부를 확인하고, 처리되지 않은 메시지는 재처리해야 한다. 따라서 Pending 메시지 관리 로직을 추가하여 메모리 누수를 방지하고, 서비스 안정성을 확보해야 한다.

Redis Stream 적용기