실시간 추천 시스템 구축 과정에서의 Redis Streams 적용 사례

안녕하세요. 오늘은 LINE앱 내의 LINE VOOM의 추천시스템에 메시지 큐로 Redis Streams를 적용한 사례를 소개합니다.


저도 Redis를 꽤 오래 사용했고, redis pub/sub을 사용해서 메시지큐로 사용하곤했었는데요. Redis Streams를 적용한 사례는 처음봐서 소개드립니다.


처음에는 Go 채널을 사용했지만, 여러가지 제약이 있어서 Redis Streams로 바꾸게 되었가고 합니다. Redis Streams를 선택한 이유는 여러 파드에서 중복 없이 처리가 가능하고, 실패한 메시지도 재처리할 수 있으며, 사내 인프라를 활용할 수 있는 장점이 있어서 도입을 해보기로 했다고 합니다.


Redis Streams 적용 후에는 또 다른 문제가 발생했습니다. 하나의 Stream에 데이터가 한 샤드에 집중되면서 메모리 부족 현상이 벌어진 거죠. 이는 Redis 클러스터의 해시 슬롯 분배 방식을 제대로 고려하지 않아서 생긴 문제였다고 하네요.


이 문제를 해결하기 위해 '쿠폰 수집가 문제'를 활용했다고 합니다. 이 방법으로 최소한의 키 개수로 모든 샤드에 키를 배정할 수 있는지를 계산할 수 있었습니다. 계산 결과 17개 이상의 Stream 키를 만들면 95% 확률로 모든 샤드에 키가 배정된다고 합니다.


저는 '쿠폰 수집가 문제'라는 용어는 처음들었습니다만, 서버개발을 하면 겪게되는 샤드쏠림현상을 해결해주는 좋은 솔루션 같습니다.


운영할 때는 Redis Streams의 온/오프 스위치와 전용 모니터링 API를 만들어서 유연하고 편리하게 운영할 수 있게되었다고 합니다.


실시간 추천 시스템에 Redis Streams 도입이라는 어려운결정을 내리고 그것을 또 잘 운영하고 있다니 대단하다는 생각이듭니다. 여러분도 시간될때 꼭 읽어보세요~


https://techblog.lycorp.co.jp/ko/building-a-messaging-queuing-system-with-redis-streams?utm_source=x&utm_medium=devrel


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

LY Corporation Tech Blog

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

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2024년 4월 4일 오전 2:16

 • 

저장 14조회 3,208

댓글 0

    함께 읽은 게시물

    🎉 벤처기업 인증 완료! 🎉

    ... 더 보기

    플레이모어와 함께할 동료를 찾습니다 | Notion

    playmoreai on Notion

    플레이모어와 함께할 동료를 찾습니다 | Notion

    6월 초, 새로운 바이브 코딩과 SW 개발의 전환의 시대

    ... 더 보기

    2025년 2분기 AI 세미나

    55check.imweb.me

    2025년 2분기 AI 세미나

    세계에서 가장 많이 팔리는 맥주가 뭔지 아십니까? 하이네켄? 버드와이저? 아닙니다. 설화맥주입니다. 처음 들어본다고요? 네. 중국에서만 팔리니까요. 중국에서 1등 하면 세계 1등 하기도 쉽다는 것을 잘 보여주는 사례입니다.

    ... 더 보기

    중국 축구가 보여준 안되는 조직의 특징 [EDITOR's LETTER]

    magazine.hankyung.com

    중국 축구가 보여준 안되는 조직의 특징 [EDITOR's LETTER]

    📰 OpenAI가 ChatGPT의 커넥터 기능을 업데이트하면서 MCP 지원을 추가했네요.

    ... 더 보기


    개발 패러다임, "무엇을 하자"보다 "무엇을 하지말자"에 주목할 것

    『Clean Architecture』의 “FUNCTIONAL PROGRAMMING” 마지막에는

    ... 더 보기