Redis Stream 적용기

Redis Stream을 활용한 Session Info Data 적재 및 API 서비스 구축
소개
Redis Stream은 빠른 속도로 데이터를 처리할 수 있는 key-value 기반의 캐시로, 팀 내 session Info data 적재 및 API 서비스에 적용되었습니다. 이는 사내에서 이미 사용되는 Redis를 확장하여 새로운 기능을 추가하기 위한 선택으로, 메시지 큐로 kafka 나 MQ를 고려했지만 Redis Stream이 개발 및 운영 측면에서 더 우수한 선택지였습니다.
Redis Stream vs Redis Pub/Sub
Redis를 활용해 메시지 Broadcasting할 때는 주로 pub/sub을 사용하며, Redis Stream은 Kafka의 offset 개념처럼 데이터를 저장하고 여러가지 처리 방법을 제공하는 기능입니다. 또한, consumer group을 지원하여 여러 consumer가 하나의 그룹으로 묶여 중복 없이 메시지를 순차적으로 처리할 수 있습니다.
Redis Stream 개발
- Publisher: Post Processor에서 데이터를 가공한 후 streamKey로 session 객체를 Redis Stream 메시지로 발행합니다.
- Consumer: Consumer Name과 StreamKey로 Consumer Group을 생성하고 메시지를 비동기적으로 처리합니다.
Redis Stream 적용 시 고려할 점
- Redis Stream은 파티션 개념이 없어 순서 보장이 되지 않으므로 데이터 처리 순서를 고려해야 합니다.
- 여러 Consumer Group을 사용하여 병렬 처리가 가능하므로 실시간 처리에 적합합니다.
결론
Redis Stream을 데이터 파이프라인에 적용하여 트래픽 처리 속도를 향상시켜 UTS Push 발송 시 지연 문제를 해결하고, BDS 행사기간에도 원활한 서비스를 제공할 수 있었습니다.
Redis Stream을 활용한 Session Info Data 적재 및 API 서비스 구축은 기존 환경을 확장하면서도 빠르고 안정적인 데이터 처리를 가능케 했고, 실시간 서비스에 적합한 선택지로 자리 잡았습니다.