목록 보기
실시간 추천 서비스를 위해 메시지 큐잉 도입하기(with Redis Streams)
데브옵스

실시간 추천 서비스를 위해 메시지 큐잉 도입하기(with Redis Streams)

라인
라인
2024년 3월 28일

두줄요약

LINE VOOM 실시간 추천을 위해 Go 채널 대신 Redis Streams 기반 큐잉 구조를 도입한 과정을 소개했습니다. 클러스터 메모리 집중 문제를 쿠폰 수집가 문제로 풀고, 운영 스위치와 모니터링 API까지 마련했습니다.

문제 상황

  • LINE VOOM 추천을 배치 기반에서 실시간 추천으로 전환할 필요성
  • 게시물 생성·수정·삭제 이벤트를 안정적으로 수집하고 검수·임베딩 생성까지 처리할 큐잉 구조 필요
  • Go 채널 기반 초기 구현의 메시지 유실, 확장성 제한, 버퍼링 한계, 운영 도구 부재

원인 분석

  • Redis Streams 도입 후에도 메시지가 단일 키로 모여 단일 샤드에 집중되는 구조
  • Redis Cluster의 해시 슬롯 분배 특성과 키-샤드 매핑 방식 간의 간극
  • 단일 Stream의 크기 증가로 인한 메모리 경고와 Big Key Issue 위험

해결 방법

  • Redis Streams를 소비자 그룹과 ACK 기반 재처리 지원이 가능한 큐로 채택
  • Stream 키를 여러 개 생성해 샤드 분산을 유도하는 방식 검토
  • 쿠폰 수집가 문제를 활용해 필요한 키 개수를 추정하고 18개 키로 분산 달성

성능/운영 포인트

  • Central Dogma 기반 온/오프 스위치로 장애 시 즉시 Go 채널로 전환 가능하게 구성
  • 현재 메시지 수와 Stream 메모리 사용량을 확인하는 모니터링 API 구축
  • 메모리 경고와 버그 대응을 위한 운영 유연성 확보

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...