Redis를 활용한 디스콰이엇 팔로우 기능 개발기
(disquiet.io)- 개발 동기: 올라오는 글들이 많아지면서 개인화된 피드를 고민했고 팔로우 기능을 구현하기로 했음.
- Redis 활용: Relevance score 시스템으로 피드를 구성하는 것을 생각했으나 동적으로 DB에 있는 포스트들을 정렬하는 것은 비효율적이였고 유저별로 사전에 정렬된 피드를 Push(fan-out-on-write)나 Pull(fan-out-on-load)형태로 가져오는 방식을 생각했음. Redis가 두가지 방식 다 수용함으로 Redis 사용하기로 결정
- ElasticCache 환경: Redis는 클러스터 안에 master node와 replica node가 있는 형태인데 이때문에 관리가 어렵다는 단점(네트워크 문제, Key distribution 문제)이 있음. 이 문제를 해결하기 위해 ElasticCache를 활용